8. CARACTERIZACION DE SISTEMAS EN EL DOMINIO DE LA FRECUENCIA


# Importar librerias basicas
import numpy as np
import matplotlib.pyplot as plt
import sympy as sym

%matplotlib inline
plt.style.use('bmh') # estilo de las graficas
from IPython.display import Latex # para visualizar ecuaciones en jupyter

Funci贸n de Transferencia

En el dominio del tiempo se utilizan diferentes representaciones para caracterizar los sistemas lineales invariantes en el tiempo (LTI). Por ejemplo, los coeficientes constantes de ecuaciones diferenciales parciales ordinarias (EDO), la respuesta al impulso y la respuesta a paso. La Funcion de transferencia denota el factor complejo $H(s)$, sobre la funci贸n propia $e^{s t}$ en la entrada de un sistema LTI y se pondera cuando pasa por el sistema. Dado que la transformada de Laplace descompone se帽ales con respecto a estas funciones propias, la funci贸n de transferencia constituye una representaci贸n de un sistema LTI en el dominio espectral (Laplace o Fourier). Los enlaces entre la funci贸n de transferencia y las representaciones en el dominio del tiempo de los sistemas LTI se analizan en este capitulo.

Relaci贸n con la respuesta al impulso y las se帽ales de entrada / salida

Ya se describi贸 en el contexto del teorema de convoluci贸n de Fourier y la transformada de Laplace, que un sistema LTI puede representarse de manera equivalente en el dominio del tiempo y en el dominio de la frecuencia (espectro). En el dominio del tiempo, la salida $y(t)$ de un sistema LTI se da al convolucionar la se帽al de entrada $x(t)$ con la respuesta de impulso $h(t)$ de sistema

$$ y(t) = x(t) * h(t) $$

Aplicando el teorema de convoluci贸n de la transformada de Laplace produce

$$ Y(s) = X(s) \cdot H(s) $$

donde $X(s) = \mathcal{L} { x(t) }$ y $Y(s) = \mathcal{L} { y(t) }$ son las transformadas de Laplace de la se帽al de entrada y salida, respectivamente. La funci贸n de transferencia $H(s)$ se da como la transformada de Laplace de la respuesta al impulso $h(t)$

$$ H(s) = \mathcal{L} { h(t) } $$

Esto tambi茅n se puede concluir a partir de la relacion entre la respuesta al impulso y la funcion de transferencia. Los resultados derivados muestran que un sistema LTI se puede caracterizar completamente en el dominio del tiempo y de la frecuencia por su respuesta al impulso $h(t)$ o la funci贸n de transferencia $H(s)$ o la respuesta en frecuencia $H(j \omega)$, respectivamente.

Sistema LTI en el dominio temporal y espectral

Adem谩s, se puede concluir que la funci贸n de transferencia se da como el cociente entre la salida $Y(s)$ y la se帽al de entrada $X(s)$ en el dominio de Laplace

$$ H(s) = \frac{Y(s)}{X(s)} $$

para $X(s) \neq 0$. Las mismas relaciones se mantienen en el dominio de Fourier si la regi贸n de convergencia (ROC) de la respuesta al impulso incluye el eje imaginario $\Re { s } = 0$. En general, la funci贸n de transferencia puede derivarse mediante la divisi贸n de los espectros de la se帽al de salida y entrada. Esto se puede utilizar para medir la funci贸n de transferencia de un sistema mediante se帽ales de entrada espec铆ficas que cumplen con $X(s) \neq 0$ con $X(s) \approx$ constante.

Ejemplo

La funci贸n de transferencia $H(s)$ de un filtro pasa bajos de segundo orden es:

$$ H(s) = \frac{1}{C L s^2 + C R s + 1} $$

la respuesta al impulso $h(t)$ del paso bajo est谩 dada por la transformada inversa de Laplace de la funci贸n de transferencia $H(s)$. Primero, la funci贸n de transferencia se define en SymPy

import sympy as sym
%matplotlib inline
sym.init_printing()

R, L, C = sym.symbols('R L C', positive=True)
s = sym.symbols('s', complex=True)

H = 1/(C*L*s**2 + C*R*s + 1)
H

$\displaystyle \frac{1}{C L s^{2} + C R s + 1}$

Luego, la transformada inversa de Laplace se calcula para los valores normalizados espec铆ficos $L = .5$, $R = 1$, $C = .4$ de los elementos del circuito.

t = sym.symbols('t', real=True)
RLC = {R: 1, L: sym.Rational('.5'), C: sym.Rational('.4')}

h = sym.inverse_laplace_transform(H.subs(RLC), s, t)
h

$\displaystyle \frac{5 e^{- t} \sin{\left(2 t \right)} \theta\left(t\right)}{2}$

Se grafican los resultados

sym.plot(h, (t, 0, 10), xlabel='$t$', ylabel='h(t)');

png

Relacion con las Ecuaciones Diferenciales de Coeficientes Constantes

Como se habia encontrado anteriormente la funci贸n de transferencia $H(s)$ del sistema como

$$ H(s) = \frac{Y(s)}{X(s)} = \frac{\sum_{m=0}^{M} \beta_m s^m}{\sum_{n=0}^{N} \alpha_n s^n} $$

La funci贸n de transferencia de un sistema LTI cuya relaci贸n de entrada y salida puede caracterizarse por una ecuacion diferencial de coeficientes constantes se da como funci贸n racional en $s$. Los coeficientes de su polinomio numerador y denominador est谩n dados por los coeficientes $\beta_m$ y $\alpha_n$ de la ecuacion diferencial. La conversi贸n entre ambas representaciones de un sistema LTI es, por lo tanto, sencilla.

Ejemplo

Los coeficientes para el filtro pasa bajos de segundo orden se pueden determinar a partir de la ecuaicon diferencial de coeficientes constantes o desde la funci贸n de transferencia anterior como

$$ \begin{align} \beta_0 &= 1 & \alpha_0 &= 1 \ & & \alpha_1 &= C R \ & & \alpha_2 &= C L \end{align} $$

A partir de estos coeficientes, la funci贸n de transferencia $H(s)$ se construye en SymPy

R, L, C = sym.symbols('R L C', positive=True)
beta = 1
alpha = L*C, R*C, 1

H = sym.Poly(beta, s) / sym.Poly(alpha, s)
H

$\displaystyle \frac{1}{C L s^{2} + C R s + 1}$

Muchos paquetes de software para procesamiento de se帽ales tienen la funcionalidad para el c谩lculo de la funci贸n de transferencia desde los coeficientes $\beta_m$ y $\alpha_n$ de un sistema. Por ejemplo, la caja de herramientas de procesamiento de se帽al de Python scipy.signal proporciona una funci贸n para evaluar num茅ricamente la funci贸n de transferencia $H(j \omega)$ en un n煤mero de frecuencias angulares $\omega_i$ para un conjunto dado de coeficientes. Esto se ilustra a continuaci贸n para los valores normalizados $R$, $L$ y $C$ utilizados anteriormente.

from scipy import signal

R = 1
L = 0.5
C = 0.4
beta = 1
alpha = L*C, R*C, 1

w, H = signal.freqresp((beta, alpha))

Esto da como resultado el vector w de frecuencias angulares discretas $\omega_i$ y el vector H con los valores de $H(j \omega)$ en estas frecuencias.

import matplotlib.pyplot as plt

plt.plot(w, abs(H))
plt.xlabel('$\omega$ in $s^{-1}$')
plt.ylabel('$|H(j \omega)|$')
plt.grid();

png

Diagramas de BODE

La funci贸n de la respuesta en freuencia Fourier $H(j \omega)$ caracteriza las propiedades de transmisi贸n de un sistema (LTI) con respecto a una se帽al exponencial arm贸nica $e^{j \omega t}$ con frecuencia angular $\omega = 2 \pi f$. Para ilustrar las caracter铆sticas de un sistema LTI, a menudo la magnitud $| H(j \omega) |$ y la fase $\varphi_H(j \omega)$ de la funci贸n de transferencia se consideran por separado. Descomponiendo la se帽al de salida $Y(j \omega) = X(j \omega) \cdot H(j \omega)$ en su magnitud $| Y(j \omega) |$ y la grafica de fase $\varphi_Y(j \omega)$

\begin{align} | Y(j \omega) | &= | X(j \omega) | \cdot | H(j \omega) | \ \varphi_Y(j \omega) &= \varphi_X(j \omega) + \varphi_H(j \omega) \end{align}

donde $X(j \omega)$ denota la se帽al de entrada, y $| X(j \omega) |$ y $\varphi_X(j \omega)$ su magnitud y fase, respectivamente. Se puede concluir de las ecuaciones anteriores, que la magnitud $| H(j \omega) |$ proporciona la atenuaci贸n dependiente de la frecuencia de la magnitud $| X(j \omega) |$ de la se帽al de entrada por el sistema, mientras que $\varphi_H(j \omega)$ proporciona el cambio de fase introducido.

Una ilustraci贸n gr谩fica de uso com煤n de las propiedades del sistema en t茅rminos de magnitud y fase de la funci贸n de transferencia son los diagramas de Bode. Aqu铆 la magnitud logar铆tmica de la funci贸n de transferencia $20 \log_{10} | H(j \omega) |$ en decibelios se grafica contra el logaritmo de la frecuencia $\omega$ o $f$. La fase $\varphi_H(j \omega)$ se grafica linealmente contra el logaritmo de la frecuencia.

%matplotlib inline
sym.init_printing()


s = sym.symbols('s')
w = sym.symbols('omega', real=True)
R, L, C = sym.symbols('R L C', positive=True)

H = 1/(C*L*s**2 + C*R*s + 1)
H = H.subs(s, sym.I * w)
H

$\displaystyle \frac{1}{- C L \omega^{2} + i C R \omega + 1}$

El diagrama de bode se genera para los valores normalizados $R = 1$, $L = 0.5$ y $C = 0.4$

from sympy.plotting.plot import MatplotlibBackend

def logx_plot(Hw, wrange, **kwargs):
    'create plot with logarithmic x-axis'
    p = sym.plot(Hw, wrange, show=False, **kwargs)
    backend = MatplotlibBackend(p)
    backend.process_series()
    backend.ax.spines['left'].set_position(('axes', 0))
    backend.ax.spines['bottom'].set_position(('axes', 0))
    plt.xscale('log')
    plt.grid(which='both')

def db(x):
    'compute dB value'
    return 20 * sym.log(sym.Abs(x), 10)


RLC = {R: 1, L: sym.Rational('.5'), C: sym.Rational('.4')}
logx_plot(db(H.subs(RLC)), (w, 0.1, 10),
          xlabel='$\omega$', ylabel='$20 \log_{10} | H(j \omega) |$ in dB')
logx_plot(sym.arg(H.subs(RLC)), (w, 0.1, 10),
          xlabel='$\omega$', ylabel=r'$\varphi(j \omega)$')

png

png

Retraso de Fase y de Grupo (Phase and Group Delay)

El retraso de fase y grupo caracterizan las propiedades de fase y retraso de un sistema LTI. Ambos cuantifican el retraso dependiente de la frecuencia que se imprime en una se帽al cuando pasa a trav茅s de un sistema. En muchas aplicaciones, el retraso introducido por un sistema debe ser lo m谩s peque帽o posible o dentro de l铆mites razonables.

Retraso de Fase

Para un sistema LTI con funci贸n de transferencia $H(j \omega)$, el retardo de fase se define de la siguiente manera

$$ t_p(\omega) = - \frac{\varphi(j \omega)}{\omega} $$

donde $\varphi(j \omega) = \arg { H(j \omega) }$ denota la fase de la funci贸n de transferencia. El retardo de fase cuantifica el retraso de una se帽al exponencial arm贸nica 煤nica $e^{j \omega t}$ con frecuencia $\omega$ cuando pasa a trav茅s del sistema. El signo negativo en la definici贸n del retraso de fase resulta en un retraso de fase positivo $t_p(\omega) > 0$ cuando un sistema retrasa una se帽al. Tenga en cuenta que el retraso de fase no esta definido para $\omega = 0$.

Como ejemplo, el retardo de fase $t_p(\omega)$ se calcula para el filtro de paso bajo de segundo orden. Primero, la funci贸n de transferencia $H(j \omega)$ se define en SymPy

%matplotlib inline
import sympy as sym
sym.init_printing()

L, R, C = sym.symbols('L R C', positive=True)
w = sym.symbols('omega', real=True)
s = sym.I * w

H = 1 / (C*L*s**2 + C*R*s + 1)
H

$\displaystyle \frac{1}{- C L \omega^{2} + i C R \omega + 1}$

Ahora se calcula el retraso de fase $t_p(\omega)$

phi = sym.arg(H)
tp = - phi/w
tp

$\displaystyle - \frac{\arg{\left(\frac{1}{- C L \omega^{2} + i C R \omega + 1} \right)}}{\omega}$

y el resultado se visualiza utilizando los valores normalizados $R=1$, $L=0.5$ y $C=0.4$ para los elementos del filtro de paso bajo

RLC = {R: 1, L: sym.Rational('.5'), C: sym.Rational('.4')}
sym.plot(tp.subs(RLC), (w, -10, 10),
         xlabel='$\omega$', ylabel='$t_p(j \omega)$');

png

Retraso de Grupo

El retraso de grupo se define como la derivada de la fase con respecto a la frecuencia

$$ t_g(\omega) = - \frac{d \varphi(j \omega)}{d \omega} $$

El retraso de grupo cuantifica el retraso que observa la envolvente de amplitud de un grupo de se帽ales exponenciales cuando pasa a trav茅s de un sistema. El signo negativo en la definici贸n anterior da como resultado un retraso de grupo positivo para un sistema que impone un retraso en la se帽al de entrada. Tenga en cuenta que la fase $\varphi(j \omega)$ en general solo es 煤nica para $- \pi < \varphi(j \omega) \leq \pi$. Si la fase excede este rango, se envuelve. Para obtener resultados significativos, se requiere desenvolver la fase antes de calcular el retraso del grupo.

Ejemplo

El Retardo de grupo $t_g(\omega)$ del filtro de paso bajo de segundo orden anterior se calcula y se representa gr谩ficamente para los valores normalizados

tg = - sym.diff(phi, w)
sym.plot(tg.subs(RLC), (w, -10, 10),
         xlabel='$\omega$', ylabel='$t_g(j \omega)$');

png

Combinacion de Sistemas

Sistemas en Serie

Cuando dos sistemas lineales invariantes en el tiempo (LTI) se combinan en serie conectando la salida del primer sistema a la entrada de un segundo sistema, esto se denomina concatenaci贸n de dos sistemas o sistemas en serie. Denotando las respuestas de impulso de los dos sistemas por $h_1(t)$ y $h_2(t)$, la se帽al de salida $y(t)$ del segundo sistema se da como

$$ y(t) = x(t) * h_1(t) * h_2(t) $$

donde $x(t)$ denota la se帽al de entrada del primer sistema. La transformaci贸n de Laplace de las respectivas se帽ales y respuestas de impulso, y la aplicaci贸n repetida del teorema de convoluci贸n produce

$$ Y(s) = \underbrace{H_1(s) \cdot H_2(s)}_{H(s)} \cdot X(s) $$

Se puede concluir que la concatenaci贸n de dos sistemas puede considerarse como un sistema LTI con la funci贸n de transferencia $H(s) = H_1(s) \cdot H_2(s)$. Por lo tanto, las siguientes estructuras son equivalentes

Concatenaci贸n de dos sistemas

La extensi贸n a una concatenaci贸n de sistemas $N$ es sencilla. La funci贸n de transferencia general viene dada por la multiplicaci贸n de todas las funciones de transferencia individuales $H_n(s)$

$$ H(s) = \prod_{n=1}^{N} H_n(s) $$

Las aplicaciones de los sistemas concatenados incluyen, por ejemplo, el modelado de sistemas de transmisi贸n inal谩mbrica y filtros en cascada.

Ejemplo

La concatenaci贸n de sistemas LTI puede usarse para construir filtros de orden superior a partir de prototipos de orden inferior. Dichos filtros se conocen como filtros en cascada. La funci贸n de transferencia $H_0(s)$ del paso bajo se da como

$$ H_0(s) = \frac{1}{LC s^2 + RC s + 1} $$

donde $R$, $L$ y $C$ denotan los valores de la resistencia, el condensador y el inductor. La concatenaci贸n de los filtros de segundo orden $N$ conduce a un filtro con el orden $2 N$. Su funci贸n de transferencia se lee

$$ H_N(s) = \left( \frac{1}{LC s^2 + RC s + 1} \right)^N $$

La funci贸n de transferencia resultante se ilustra mediante su diagrama de Bode para un n煤mero variable de filtros en cascada utilizando los valores normalizados $L = .5$, $R = 1$, $C = .4$ . Primero se define la funci贸n de transferencia $H_N(s)$

%matplotlib inline
import sympy as sym
sym.init_printing()

s = sym.symbols('s', complex=True)
w, R, L, C = sym.symbols('omega R L C', real=True)
N = sym.symbols('N', integer=True)

H0 = 1/(L*C*s**2 + R*C*s + 1)
HN = H0**N
HN

$\displaystyle \left(C L s^{2} + C R s + 1\right)^{- N}$

El diagrama de bode para la funci贸n de transferencia $H_N(j \omega)$ se muestra para $N = {1, 2, 3}$ (l铆nea roja, verde, azul)

import matplotlib.pyplot as plt
from sympy.plotting.plot import MatplotlibBackend

RLC = {R: 1, L: sym.Rational('.5'), C: sym.Rational('.4')}
HNlog = 20*sym.log(sym.Abs(HN.subs(RLC).subs(s, 2*sym.pi*w)), 10)

p1 = sym.plot(HNlog.subs(N, 1), (w, 0.1, 100), xlabel='$\omega$', ylabel='$20 \log_{10} | H_n(j \omega) | in dB$', line_color='r', show=False);
p2 = sym.plot(HNlog.subs(N, 2), (w, 0.1, 100), xlabel='$\omega$', ylabel='$20 \log_{10} | H_n(j \omega) | in dB$', line_color='g', show=False);
p3 = sym.plot(HNlog.subs(N, 3), (w, 0.1, 100), xlabel='$\omega$', ylabel='$20 \log_{10} | H_n(j \omega) | in dB$', line_color='b', show=False);
p1.extend(p2)
p1.extend(p3)

backend = MatplotlibBackend(p1)
backend.process_series()
backend.ax.spines['left'].set_position(('axes', 0))
backend.ax.spines['bottom'].set_position(('axes', 0))
plt.xscale('log')
plt.grid(which='both')

png

Sistemas en Paralelo

Una estructura donde dos sistemas LTI comparten la misma se帽al de entrada y las se帽ales de salida se superponen se llama conexi贸n en paralelo. La se帽al de salida general $y(t)$ se da como la superposici贸n de las se帽ales de salida de los sistemas individuales

$$ y(t) = h_1(t) * x(t) + h_2(t) * x(t) $$

La Transformaci贸n de Laplace de las respectivas se帽ales y respuestas de impulso, y la aplicaci贸n del teorema de convoluci贸n produce

$$ Y(s) = \underbrace{\left( H_1(s) + H_2(s) \right)}_{H(s)} \cdot X(s) $$

La funci贸n de transferencia global $H(s)$ de una conexi贸n paralela de dos sistemas se da como la superposici贸n de las funciones de transferencia de los sistemas individuales. Por lo tanto, las siguientes estructuras son equivalentes

Conexi贸n en paralelo de dos sistemas

La extensi贸n a una conexi贸n paralela de sistemas $N$ es sencilla. La funci贸n de transferencia general viene dada por la superposici贸n de todas las funciones de transferencia individuales $H_n(s)$

\begin{equation} H(s) = \sum_{n=1}^{N} H_n(s) \end{equation}

Una aplicaci贸n destacada de una conexi贸n paralela de sistemas son bancos de filtros como se utilizan en el an谩lisis de se帽ales y muchos esquemas de codificaci贸n con p茅rdida como MP3, AAC, etc.

Sistema Realimentado

La conexi贸n de dos sistemas LTI, donde la entrada del segundo sistema est谩 conectada a la salida del primero y la salida del segundo sistema se superpone a la entrada del primero se llama circuito realimentado. Esta estructura se representa en la siguiente ilustraci贸n

Dos sistemas combinados en un ciclo de retroalimentaci贸n

La se帽al de salida $y(t)$ se da como

$$ y(t) = x(t) * h_1(t) + y(t) * h_2(t) * h_1(t) $$

La transformada de Laplace de las se帽ales y las respuestas a los impulsos, la aplicaci贸n del teorema de convoluci贸n y la reordenaci贸n de los rendimientos de los t茅rminos

$$ Y(s) = \frac{H_1(s)}{1 - H_1(s) \cdot H_2(s)} \cdot X(s) $$

La funci贸n de transferencia general $H(s)$ del ciclo de realimentaci贸n se da como

$$ H(s) = \frac{H_1(s)}{1 - H_1(s) \cdot H_2(s)} $$

Esta equivalencia se representa en el diagrama de bloques inferior de la estructura anterior.

Las aplicaciones de los circuitos de retroalimentaci贸n incluyen sistemas de control, dise帽o de amplificadores, entre otros.

REFERENCIAS

Phd. Jose R. Zapata