5.3 LTI-CT Fourier – Funciones de transferencia H(ω) por bloques

Referencia: Oppenheim 3.2 p182, 4.4 p314, Lathi p714 Hsu 5.5.A p223

Las transformadas de Fourier presentan una facilidad con la propiedad de la convolución expresada como:

y(t)= h(t) \circledast x(t) \leftrightarrow Y(j\omega) = H(j \omega) X(j\omega)

Lo que para señales y sistemas representa un componente importante en el análisis de sistemas LTI, al poder representar los sitemas por bloques en serie y paralelo semejante a lo realizado con la transformada de Laplace:

La convergencia de la transformada de Fourier se garantiza bajo ciertas condiciones. El análisis de Fourier para el estudio de sistemas LTI se restringe a los que sus respuestas al impulso tienen transformada de Fourier. Los detalles se mostrarán en cada ejercicio presentado.

Ejemplo 1. h(t) como respuesta a un impulso desplazado

Referencia: Oppenheim Ej 4.16 p317, Lathi 7.14 708. Hsu 5.4.B p219

Considere un sistema LTI CT (continuo en el tiempo) con respuesta a impulso dado por:

h(t) = \delta (t-t_0)

La respuesta a este sistema esta dada por la respuesta desplazada del impulso.

H(j \omega) = 1 e^{-j \omega t_0} = e^{-j \omega t_0}

El sistema ante una entrada x(t) con transformada de Fourier X(jω) tendrá la salida:

Y(j \omega) =H(j \omega)X(j \omega) = e^{-j \omega t_0} X(j \omega)

Ejemplo 2. h(t) como un diferenciador

Referencia: Oppenheim Ej 4.16 p317, Lathi 7.14 716. Hsu 5.4.G p220

El bloque de respuesta a impulso es un diferenciador, por lo que las funciones de entrada y salida se relacionan por

y(t) = \frac{\delta}{\delta t}x(t)

usando la propiedad de diferenciación

Y(j \omega) = j \omega X(j \omega )

en consecuencia:

H(j \omega) = j \omega

Ejemplo 3. h(t) como un integrador

Referencia: Oppenheim Ej 4.17 p318,  Hsu 5.4.I p220

El bloque de respuesta a impulso es una integración, por lo que las funciones de entrada y salida se relacionan por

y(t) = \int_{-\infty}^{t}x(\tau) \delta \tau

usando la propiedad de Integración:

H(j \omega) = \frac{1}{j \omega} +\pi \delta(\omega) Y(j \omega) = \Big[\frac{1}{j \omega} +\pi \delta(\omega) \Big]X(j \omega) Y(j \omega) = \frac{1}{j \omega}X(j \omega) +\pi \delta(\omega) X(0)

Ejemplo 4. y(t) con h(t) y x(t) en dominio de frecuencia

Referencia: Oppenheim Ej 4.19 p320,  Hsu 5.4.I p220

Considere la respuesta al impulso de un sistema LTI como:

h(t) = e^{-at} \mu (t) \text{ , } a>0

y una señal de entrada:

x(t) = e^{-bt} \mu (t) \text{ , } b>0

En lugar de calcular la convolución se resolverá el problema en el dominio de la frecuencia.

Para observar una gráfica, se supondrán valores de a=3 y b=2

H(j \omega) = \frac{1}{a+ j \omega} X(j \omega) = \frac{1}{b+ j \omega} Y(j \omega) = H(j \omega)X(j \omega) = \Big[ \frac{1}{a+ j \omega} \Big] \Big[ \frac{1}{b+ j \omega} \Big]

Para hacer la transformada inversa de Fourier, se usa fracciones parciales, semejante a lo realizado en la unidad 4

Y(j \omega) = \frac{k_1}{a+ j \omega} + \frac{k_2}{b+ j \omega} k_1 = \frac{1}{\cancel{(a+ j \omega)} (b+ j \omega)} \Big|_{j\omega=-a} = \frac{1}{b-a} k_2 = \frac{1}{(a+ j \omega) \cancel{(b+ j \omega)}} \Big|_{j\omega=-b} = \frac{1}{a-b}

con lo que k1= -k2

Y(j \omega) = \frac{1}{b-a} \Big[\frac{1}{a+ j \omega} - \frac{1}{b+ j \omega} \Big]

la transformada inversa se obtiene para cada término de la suma como:

y(t) = \frac{1}{b-a} \Big [ e^{-at} \mu(t) - e^{-bt} \mu(t) \Big]

En el algoritmo se procede de forma semejante a usar H(s). La parte gráfica se trata como un elemento separado del problema.

Instrucciones en Python

# H(w) fracciones parciales
# Ejemplo Oppenjeim 4.17 p318
# Qw Y(w) = Pw X(w)
# H(w)=Pw/Qw, numerador Pw, denominador Qw
# http://blog.espol.edu.ec/telg1001/

import sympy as sym
import numpy as np
import matplotlib.pyplot as plt

# INGRESO
w = sym.Symbol('w')
t = sym.Symbol('t',real=True)
a = sym.Symbol('a',real=True)
b = sym.Symbol('b',real=True)

# H(w) respuesta impulso
Pw = 1+0*w
Qw = a + sym.I*w

# X(w) Señal de entrada
Xw = 1/(b+sym.I*w)

# PROCEDIMIENTO
Pw = Pw.as_poly(w)
Qw = Qw.as_poly(w)

# Respuesta impulso
Hw = Pw/Qw
Hwp = sym.apart(Hw,w)

# Y(w) a entrada X(w)
Yw = Hw*Xw
Ywp = Yw.apart(w)

# SALIDA - polinomio
print('H(w):')
sym.pprint(Hw)

print('\nH(w) fracciones parciales:')
sym.pprint(Hwp)

print('\n Y(w)')
sym.pprint(Yw)

print('\n Y(w) total en fracciones parciales:')
sym.pprint(Ywp)

Las gráficas se desarrollan de acuerdo al caso del ejercicio, añadiendo instrucciones como:

# grafica de Y(w)-------------------------
a1 = 3 ; b1 = 2
muestras = 51
a_wlim = a1*4
wi  = np.linspace(-a_wlim,a_wlim,muestras)

# Y(w) real e imaginaria
Fwa = sym.lambdify(w,Yw.subs({a:a1,b:b1}))
Fwi = Fwa(wi) # evalua wi
if Yw.is_constant():
    Fwi = np.ones(len(wi))*Yw # evalua wi

# grafica Y(w)
figura, graf_Fwi = plt.subplots(2,1)

graf_Fwi[0].plot(wi,np.real(Fwi),label='Re(Y(w))',
                 color='orange')
graf_Fwi[0].axhline(0)
graf_Fwi[0].legend()
graf_Fwi[0].set_ylabel('Re (y(w)) ')
graf_Fwi[0].grid()

graf_Fwi[1].plot(wi,np.imag(Fwi),label='Imag(Y(w))',
                 color='magenta')
graf_Fwi[1].legend()
graf_Fwi[1].set_xlabel('w')
graf_Fwi[1].set_ylabel('imag(Y(w))')
graf_Fwi[1].grid()
etiqueta = ' ; a='+str(a1)+' ; b='+str(b1)
plt.suptitle(r'Y(w) = $'+str(sym.latex(Ywp))+'$'+etiqueta)
#plt.show()

# f(t)  --------------------------
# intervalo de gráfica [a_lim,b_lim]
T1 = 1
a_tlim = -2*T1
b_tlim = 2*T1
muestras = 51
ti  = np.linspace(a_tlim,b_tlim,muestras)
xt = lambda t: np.exp(-b1*t)*np.heaviside(t,0)
xti = xt(ti)
ht = lambda t: np.exp(-a1*t)*np.heaviside(t,0)
hti = ht(ti)
yt = lambda t: (1/(b1-a1))*(np.exp(-a1*t)*np.heaviside(t,0)-np.exp(-b1*t)*np.heaviside(t,0))
yti = yt(ti)

# grafica en dominio de tiempo
figura, graf_yt = plt.subplots()

graf_yt.plot(ti,xti,label='x(t)', color='blue')
graf_yt.plot(ti,hti,label='h(t)', color='magenta')
graf_yt.plot(ti,yti,label='y(t)', color='orange')
graf_yt.legend()
graf_yt.set_xlabel('t')
graf_yt.grid()
graf_yt.set_title('y(t) con h(t) y x(t)')
plt.show()