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 \omegaEjemplo 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 \tauusando 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>0y una señal de entrada:
x(t) = e^{-bt} \mu (t) \text{ , } b>0En 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()