Está en la página 1de 17

Procesamiento de Seales

Series y Transformadas de Fourier

Anlisis de Fourier en MATLAB


1.1 Series de Fourier Si una funcin g(t) es peridica con periodo Tp, g(t) = g(t Tp) (1.1)

y en cualquier intervalo finito g(t) tiene un numero finito de discontinuidades y un numero finito de mximos y mnimos (condiciones de Dirichlet), y adems

g (t )dt < (1.2)


Tp 0

entonces g(t) puede expresarse con una serie de sinusoidales. Esto es,

g (t ) = donde

a0 + an cos(n0t ) + bn sen(n0t ) 2 n=1

(1.3)

0 =

2 (1.4) Tp

y los coeficientes de Fourier an y bn se determinan por las siguiente ecuaciones. an = 2 Tp 2 Tp

to +Tp

t0

g (t ) cos(n0t )dt g (t )sen(n0t )dt

n = 0,1,2,... (1.5)

bn =

to +Tp

t0

n = 0,1,2,...

(1.6)

a0 en la ecuacin (1.3) es el 2 componente de dc de las series y es el valor promedio de g(t) en un periodo. El trmino an cos(n0t ) + bn sen(n0t ) es llamado la ensima armnica. La primer armnica se obtiene cuando n = 1. Tambin es llamada la armnica fundamental con la frecuencia fundamental de 0. Cuando n = 2, se tiene la segunda armnica.
La ecuacin (1.3) se llama la serie trigonomtrica de Fourier. El trmino La ecuacin (1.3) se puede reescribir como
a0 g (t ) = + An cos(n0t + n ) 2 n=1 (1.7)

M.C. Braulio Jos Cruz Jimnez

Procesamiento de Seales donde

Series y Transformadas de Fourier

2 2 An = an + bn

(1.8)

y
bn (1.9) an La potencia total en g(t) esta dada por la ecuacin de Parseval:

n = tan 1

P=

1 Tp

t0 +Tp

t0

2 g 2 (t )dt = Adc + n =1

2 An 2

(1.10)

donde
a A = 0 2
2 dc 2

(1.11)

El siguiente ejemplo muestra la sntesis de una onda cuadrada usando la expansin en series de Fourier. Ejemplo 1.1 Usando la expansin en series de Fourier, una onda cuadrada de periodo 2 ms, con un valor de pico a pico de 2 volts y un valor promedio de cero volts puede expresarse como g (t ) = donde f0 =500 Hz Si a(t) es dada como a(t ) =

(2n 1) sen[(2n 1)2f t ]


n =1 0

(1.12)

(2n 1) sen[(2n 1)2f t ]


n =1 0

12

(1.13)

Escriba un programa en MATLAB que dibuje a(t) de 0 a 4 ms en intervalo de 0.05 ms y muestre que a(t) es una buena aproximacin de g(t).

M.C. Braulio Jos Cruz Jimnez

Procesamiento de Seales Solucin MATLAB Script % fourier series expansion f = 500; c = 4/pi; dt = 5.0e-05; tpts = (4.0e-3/5.0e-5) + 1; for n = 1: 12 for m = 1: tpts s1(n,m) = (4/pi)*(1/(2*n - 1))*sin((2*n - 1)*2*pi*f*dt*(m-1)); end end for m = 1:tpts a1 = s1(:,m); a2(m) = sum(a1); end f1 = a2'; t = 0.0:5.0e-5:4.0e-3; clg plot(t,f1) xlabel('Time, s') ylabel('Amplitude, V') title('Fourier series expansion')

Series y Transformadas de Fourier

Figura 1.1 Aproximacin de la onda cuadrada.

M.C. Braulio Jos Cruz Jimnez

Procesamiento de Seales

Series y Transformadas de Fourier

Utilizando la identidad de Euler, las funciones coseno y seno de la ecuacin (1.3) pueden reemplazarse por exponenciales equivalentes, quedando la expresin. g (t ) = cn exp( jn0t )
n =

(1.14)

donde cn = y 1 Tp

Tp / 2

Tp / 2

g (t ) exp( jn0t )dt

(1.15)

0 =

2 Tp

La ecuacin (1.14) es llamada la expansin exponencial de la serie de Fourier. El coeficiente cn se relaciona con los coeficientes an y bn de las ecuaciones (1.5) y (1.6) por la expresin
b tan 1 n (1.16) a n

cn =

1 2 2 an + bn 2

Adems, cn se relaciona con An y n de las ecuaciones (1.8) y (1.9) por la relacin

cn =

An 2

n (1.17)

La grfica de cn versus frecuencia se llama el espectro de amplitud discreta o espectro de lneas. Provee informacin de la amplitud espectral de los componentes de g(t). Una grfica similar de cn versus frecuencia se llama espectro discreto de fase y provee informacin de los componentes de fase con respecto a la frecuencia de g(t). Si una seal de entrada xn(t)
xn (t ) = cn exp( jn0t )

(1.18)

pasa a travs de un sistema con funcin de transferencia H(), cuando la salida del sistema yn(t) es
yn (t ) = H ( jn0 )cn exp( jn0t ) (1.19)

M.C. Braulio Jos Cruz Jimnez

Procesamiento de Seales

Series y Transformadas de Fourier

El diagrama de bloques de la relacin entrada/salida se muestra en la figura 1.2.

Figura 1.2. Relacin entrada/salida. Sin embargo, con una entrada xn(t) consistente de una combinacin lineal de excitaciones complejas, xn (t ) =

n =

exp( jn0t )

(1.20)

la respuesta a la salida del sistema es yn (t ) =

n =

H ( jn )c
0

exp( jn0t )

(1.21)

Los siguientes dos ejemplos muestran como utilizar Matlab para obtener los coeficientes de la expansin de la serie de Fourier. Ejemplo 1.2 Para la forma de onda rectificada completamente mostrada en la figura 1.3, el periodo es 0.0333s y la amplitud es 169.71 Volts. (a) Escriba un programa en MATLAB para obtener los coeficientes exponenciales cn de la serie de Fourier para n = 0,1, 2, , 19. (b) Halle el valor de dc. (c) Grafique el espectro de amplitud y de fase.

Figura 1.3. Forma de onda rectificado completamente. M.C. Braulio Jos Cruz Jimnez

Procesamiento de Seales Solucin diary ex1_2.dat % generate the full-wave rectifier waveform f1 = 60; inv = 1/f1; inc = 1/(80*f1); tnum = 3*inv; t = 0:inc:tnum; g1 = 120*sqrt(2)*sin(2*pi*f1*t); g = abs(g1); N = length(g); % % obtain the exponential Fourier series coefficients num = 20; for i = 1:num for m = 1:N cint(m) = exp(-j*2*pi*(i-1)*m/N)*g(m); end c(i) = sum(cint)/N; end cmag = abs(c); cphase = angle(c); %print dc value disp('dc value of g(t)'); cmag(1) % plot the magnitude and phase spectrum f = (0:num-1)*60; subplot(121), stem(f(1:5),cmag(1:5)) title('Amplitude spectrum') xlabel('Frequency, Hz') subplot(122), stem(f(1:5),cphase(1:5)) title('Phase spectrum') xlabel('Frequency, Hz') diary dc value of g(t) ans = 107.5344

Series y Transformadas de Fourier

M.C. Braulio Jos Cruz Jimnez

Procesamiento de Seales

Series y Transformadas de Fourier

Figura 1.4. Espectro de magnitud y fase de la forma de onda rectificada completamente. Ejemplo 1.3 La seal peridica que se muestra en la figura 1.5 puede expresarse como
g (t ) = e 2t 1 t < 1 g (t + 2) = g (t )

(i) Muestre que su expansin en series de Fourier exponencial puede expresarse como

( 1)n (e 2 e 2 ) exp( jnt ) g (t ) = n = 2(2 + jn )

(1.22)

(ii) Utilizando un programa en Matlab, sintetiza g(t) utilizando 20 trminos. (1) n e 2 e 2 g (t ) = exp( jnt ) 2(2 + jn ) n =10
10

Figura 1.5. Seal exponencial peridica. M.C. Braulio Jos Cruz Jimnez

Procesamiento de Seales Solucin (i) g (t ) = donde cn = y 1 Tp

Series y Transformadas de Fourier

n =

exp( jn0t )

Tp / 2

Tp / 2

g (t ) exp( jn0t )dt

0 =
cn =

2 2 = = 2 Tp

1 1 exp( 2t ) exp( jnt )dt 2 1


(1) n e 2 e 2 2(2 + jn )

cn =

entonces

( 1)n (e 2 e 2 ) exp( jnt ) g (t ) = n = 2(2 + jn )

(ii) Script de MATLAB % synthesis of g(t) using exponential Fourier series expansion dt = 0.05; tpts = 8.0/dt +1; cst = exp(2) - exp(-2); for n = -10:10 for m = 1:tpts g1(n+11,m) = ((0.5*cst*((-1)^n))/(2+j*n*pi))*(exp(j*n*pi*dt*(m-1))); end end for m = 1: tpts g2 = g1(:,m); g3(m) = sum(g2); end M.C. Braulio Jos Cruz Jimnez

Procesamiento de Seales g = g3'; t = -4:0.05:4.0; plot(t,g) xlabel('Time, s') ylabel('Amplitude') title('Approximation of g(t)')

Series y Transformadas de Fourier

Figura 1.6. Una aproximacin de g(t).


1.2 Transformada de Fourier

Si g(t) es una seal no peridica deterministica expresada como funcin del tiempo t, entonces la transformada de Fourier de g(t) esta dad por la expresin integral:

G ( f ) = g (t ) exp( j 2ft )dt (1.23)

donde

j = 1 y f denota la frecuencia g(t) puede obtenerse de la transformada de Fourier G(f) por la formula de transformada inversa de Fourier:

g (t ) = G ( f ) exp( j 2ft )df (1.24)

Para que una seal g(t) tenga transformada de Fourier, debe satisfacer las condiciones de Dirichlet. Si g(t) es continua y no peridica, entonces G(f) ser continua y peridica. Si g(t) es continua y peridica, entonces G(f) ser discreta y no peridica, esto es

g (t ) = g (t nTp )

(1.25)
M.C. Braulio Jos Cruz Jimnez

Procesamiento de Seales donde Tp= periodo entonces la transformada de Fourier de g(t) es

Series y Transformadas de Fourier

G( f ) =
donde cn = 1 Tp

1 Tp

n=

c f T
n

1 p

(1.26)

Tp / 2

Tp / 2

g (t ) exp( j 2nf 0t )dt

(1.27)

1.2.1 Propiedades de la transformada de Fourier Si g(t) y G(f) son un par de transformadas de Fourier, y estn expresadas como

g (t ) G( f )

(1.28)

entonces la transformada de Fourier tendr las siguientes propiedades: Linealidad


ag1 (t ) + bg 2 (t ) aG1 ( f ) + bG2 ( f ) (1.29)

donde a y b son constantes Escalamiento en el tiempo

g (at )
Dualidad

1 f G a a

(1.30)

G (t ) g ( f ) (1.31)

Desplazamiento en el tiempo
g (t t0 ) G ( f ) exp( j 2ft0 ) (1.32)

Desplazamiento en la frecuencia
exp( j 2 f c t )g (t ) G ( f f c ) (1.33)

M.C. Braulio Jos Cruz Jimnez

Procesamiento de Seales Diferenciacin en el dominio del tiempo

Series y Transformadas de Fourier

dg (t ) j 2f G ( f ) (1.34) dt
Integracin en el dominio del tiempo
1 g ( )d j 2f G( f ) + G(0) ( f )
t

(1.35)

Multiplicacin en el dominio del tiempo

g1 (t ) g 2 (t ) G1 ( )G2 ( f )d (1.36)

Convolucin en el dominio del tiempo

g1 ( )g 2 (t )d G1 ( f )G2 ( f ) (1.37)

1.3 Transformadas Discreta y Rpida de Fourier

Las series de Fourier enlazan una seal continua en el tiempo con el dominio de la frecuencia discreto. La periodicidad de la seal en el dominio del tiempo forza al espectro a ser discreto. La transformada discreta de Fourier de una seal en tiempo discreto g[n] est dada por G[k ] = g [n]exp( j 2nk / N ) k = 0,1,..., N 1
n =0 N 1

(1.38)

La transformada inversa discreta de Fourier, g[n] es g [n] = G[k ]exp( j 2nk / N ) n = 0,1,..., N 1
k =0 N 1

(1.39)

donde N es el nmero de valores de la secuencia en el tiempo de g[n]. Tambin es el nmero total de valores de la secuencia en la frecuencia de G[k]. T es el intervalo de tiempo entre dos muestras consecutivas de la secuencia de entrada g[n]. F es el intervalo de frecuencia entre dos muestras consecutivas de la secuencia de salida G[k]. N, T, y F estn relacionadas por la expresin

M.C. Braulio Jos Cruz Jimnez

Procesamiento de Seales

Series y Transformadas de Fourier

NT =

1 F

(1.40)

NT es tambin igual a la longitud de grabacin. El intervalo de tiempo, T, entre las muestras debe ser elegido de tal manera que el teorema de muestreo de Shannon se satisfaga. Esto significa que T debe ser menor que el reciproco de 2FH, donde FH es el componente de frecuencia significativa mas alta en la seal de tiempo continuo g(t) de la cual la secuencia g[n] fue obtenida. Muchos algoritmos de DTF rpidas requieren que N sea un entero de potencia 2. Una funcin en tiempo discreto tendr un espectro peridico. En la DFT, tanto la funcin en el tiempo como las funciones en el dominio de la frecuencia son peridicas. Debido a la periodicidad de la DFT, es comn referirse a la puntos desde n = 1 hasta n = N/2 como positivos, y los puntos desde n = N/2 hasta n = N - 1 como frecuencias negativas. Adems, ya que las dos secuencias en el tiempo y en la frecuencia son peridicas, los valores de la DFT en los puntos n = N/2 hasta n = N 1 son iguales a los valores de la DFT en los puntos n = N/2 hasta n = 1. En general, si la secuencia en el tiempo es de valor real, entonces la DFT tendr componentes reales los cuales son pares e imaginarios que son impares. Similarmente, para una secuencia de tiempo con valores imaginarios, la DFT tendr valores cuya componente real es impar y una componente imaginaria par. Si definimos una funcin de ponderacin WN como
WN = e
j 2 N

= e j 2FT

(1.41)

Las ecuaciones (1.38) y (1.39) se pueden expresar como


kn G[k ] = g [n]WN n =0 N 1

(1.42)

y g [n] = G[k ] N kn (1.43) W


k =0 N 1

La transformada rpida de Fourier, FFT, es un mtodo eficiente para computar la transformada discreta de Fourier. La FFT reduce el nmero de clculos necesarios para computar la DFT. Por ejemplo, si una secuencia tiene N puntos, y N es un integral de potencia 2, entonces la DFT requiere N2 operaciones, N N log 2 ( N ) multiplicacin compleja, log 2 ( N ) adiciones complejas y mientras que la FFT requiere 2 2 N log 2 ( N ) substracciones. Para N = 1024, la reduccin computacional de la DFT a la FFT es ms de 200 a 2 1. La FFT puede utilizarse para (a) obtener el espectro de potencia de una seal, (b) para filtrado digital, y (c) obtener la correlacin entre dos seales. M.C. Braulio Jos Cruz Jimnez

Procesamiento de Seales
1.3.1 La funcin fft de MATLAB

Series y Transformadas de Fourier

La funcin de MATLAB para calcular la transformada rpida de Fourier es fft(x) donde x es el vector a ser transformado. fft (x, N) es tambin un comando de MATLAB que puede ser usado para obtener una fft de N-puntos. El vector x es truncado o se aaden ceros a N si es necesario. Las funciones en MATLAB para calcular la fft inversa es
ifff ( x)

[z

, z p = fftplot ( x, ts )

Se utiliza para obtener la fft y la grfica de la magnitud zm y zp de la DTF de x. El intervalo de muestreo es ts. Su valor por defecto es 1. Los espectros son graficados versus la frecuencia digital F. Ejemplo 1.4 Dada la secuencia x[n] = (1, 2, 1). (a) Calcular la DFT de x[n]. (b) Utilizar el algoritmo de la fft para encontrar la DFT de x[n]. (c) Compare los resultados de (a) y (b). Solucin (a) De la ecuacin (1.42)
kn G[k ] = g [n]WN n =0 N 1

De la ecuacin (1.41) W30 = 1


W =e
1 3 j 2 3 j 4 3

= 0.5 j 0.866 = 0.5 + j 0.866

W32 = e

W33 = W30 = 1 W34 = W31

M.C. Braulio Jos Cruz Jimnez

Procesamiento de Seales Utilizando la ecuacin (1.41), tenemos G[0] = g [n]W30 = 1 + 2 + 1 = 4


n =0

Series y Transformadas de Fourier

G[1] = g [n]W3n = g [0]W30 +g [1]W31 + g [2]W32 = 1 + 2( 0.5 j 0.866) + ( 0.5 + j 0.866) = 0.5 j 0.866
n =0

G[2] = g [n]W32 n = g [0]W30 +g [1]W32 + g [2]W34 = 1 + 2( 0.5 + j 0.866) + ( 0.5 j 0.866) = 0.5 + j 0.866
n =0

(b) El programa en MATLAB para calcular la DFT de x[n] es %Script de MATLAB diary ex1_4.dat % x = [1 2 1]; xfft = fft(x) diary Los resultados son xfft = 4.0000 -0.5000 - 0.8660i -0.5000 + 0.8660i

(c) Se puede observar que las respuestas obtenidas en las partes (a) y (b) son idnticas. Ejemplo 1.5 La seal g(t) esta dada como
g (t ) = 4e 2t cos[2 (10)t ]u (t )

(a) Hallar la transformada de Fourier de g(t). G(f). (b) Hallar la DFT de g(t) cuando el intervalo de muestreo es 0.05 s con N = 1000. (c) Hallar la DFT de g(t) cuando el intervalo de muestreo es 0.2 s con N = 250. (d) Compare los resultados obtenidos de las partes a, b y c. Solucin (a) g(t) puede expresarse como 1 1 g (t ) = 4e 2t e j 20 t + e j 20t u (t ) 2 2

M.C. Braulio Jos Cruz Jimnez

Procesamiento de Seales

Series y Transformadas de Fourier

Usando la propiedad de desplazamiento en la frecuencia de la transformada de Fourier, obtenemos


G( f ) = 2 + j 2 ( f 10 ) 2 + 2 + j 2 ( f + 10 ) 2

(b, c) The MATLAB program for computing the DFT of gt() is MATLAB Script % DFT of g(t)% Sample 1, Sampling interval of 0.05 sts1 = 0.05; % sampling interval fs1 = 1/ts1; % Sampling frequency n1 = 1000; % Total Samples m1 = 1:n1; % Number of bins sint1 = ts1*(m1 - 1); % Sampling instants freq1 = (m1 - 1)*fs1/n1; % frequencies gb = (4*exp(-2*sint1)).*cos(2*pi*10*sint1); gb_abs = abs(fft(gb)); subplot(121) plot(freq1, gb_abs) title('DFT of g(t), 0.05s Sampling interval') xlabel('Frequency (Hz)') % Sample 2, Sampling interval of 0.2 s ts2 = 0.2; % sampling interval fs2 = 1/ts2; % Sampling frequency n2 = 250; % Total Samples m2 = 1:n2; % Number of bins sint2 = ts2*(m2 - 1); % Sampling instants freq2 = (m2 - 1)*fs2/n2; % frequencies gc = (4*exp(-2*sint2)).*cos(2*pi*10*sint2); gc_abs = abs(fft(gc)); subplot(122) plot(freq2, gc_abs) title('DFT of g(t), 0.2s Sampling interval') xlabel('Frequency (Hz)')

M.C. Braulio Jos Cruz Jimnez

Procesamiento de Seales

Series y Transformadas de Fourier

Figura 1.7. DEFT de g(t) (d) De la figura 1.7, se puede ver que con el intervalo de muestreo de 0.05 s, no hay aliasing y el espectro de G[k] de la parte (b) es casi el mismo que G[f] de la parte (a). Con el intervalo de muestreo de 0.2 s (menos que el porcentaje de Nyquist), hay aliasing y el espectro de G[k] es diferente al de G(f). Ejemplo 1.6 Dada una seal con ruido
g (t ) = sen(2f1t ) + 0.5n(t )

donde f1 = 100 Hz n(t) es un ruido blanco distribuido normalmente. La duracin de g(t) es 0.5 segundos. Use la funcin rand de MATLAB para generar la funcin de ruido. Utilice MATLAB para obtener el espectro de densidad de potencia Solucin Un programa representativo que puede utilizarse para graficar la seal con ruido y obtener el espectro de densidad de potencia es Script de MATLAB % power spectral estimation of noisy signal t = 0.0:0.002:0.5; f1 =100; M.C. Braulio Jos Cruz Jimnez

Procesamiento de Seales % generate the sine portion of signal x = sin(2*pi*f1*t); % generate a normally distributed white noise n = 0.5*randn(size(t)); % generate the noisy signal y = x+n; subplot(211), plot(t(1:50),y(1:50)), title('Nosiy time domain signal') % power spectral estimation is done yfft = fft(y,256); len = length(yfft); pyy = yfft.*conj(yfft)/len; f = (500./256)*(0:127); subplot(212), plot(f,pyy(1:128)), title('power spectral density'), xlabel('frequency in Hz')

Series y Transformadas de Fourier

La amplitud de la seal de ruido y sinusoidal puede cambiarse para observar sus efectos en el espectro.

Figura 1.7. Seal con ruido y su espectro.

M.C. Braulio Jos Cruz Jimnez

También podría gustarte