Вы находитесь на странице: 1из 14

UCSM-PPIE

PROCESAMIENTO DIGITAL DE SEALES


QUINTA PRCTICA DE LABORATORIO
ANLISIS ESPECTRAL- TRANSFORMADAS DE FOURIER

I. OBJETIVOS
Realizar el anlisis espectral y frecuencial de seales

II. MARCO TERICO

DTFT (Transformada de Fourier en Tiempo Discreto )

La transformada de Fourier X(w) de una seal en tiempo discreto x[n] se calcula mediante la
expresin

y su inversa es,

La DTFT X(w) toma valores complejos y es una funcin continua y peridica en w. El periodo es
2, representndose normalmente en el intervalo [ -,]. Al evaluar numricamente la DTFT se
presentan dos problemas:

La secuencia x[n] puede tener un nmero infinito de puntos: para resolver el primer problema
consideraremos que la secuencia de entrada est formada por un vector de L puntos siendo 0 para
los valores comprendidos entre L+1 e infinito.

X(w) es una funcin continua de la frecuencia w y debe ser discretizada para trabajar en un
procesador digital: consideraremos que X(w) se evala en un nmero N finito de frecuencias
equidistantes en el intervalo [-,] con incrementos de 2/N, es decir se consideran el
conjunto discreto de frecuencias wk = 2k/N con k=0,1,...N-1. Si se elige N lo suficientemente
grande los valores X[2k/N] se aproximan a la funcin X(w) continua que tuvo que ser
muestreada. Al muestrear la DTFT de esta manera se obtiene la expresin correspondiente a la
trasformada discreta de Fourier DFT que en MATLAB se implementa mediante el algoritmo
conocido como FFT (Fast Fourier Transform). Se debe elegir N tal que N>L.
III. ACTIVIDADES

1. Para:
a = {1, 3, -2, 2, 4, 3}
b = {1, 5, 1, 4, 4, 2}
c = {1, 3, -2, 0, 0, 0, 0, 0}
d = {1, 5, 1, 0, 0, 0, 0, 0}
Encontrar la TDF
a=[1,3,-2,2,4,3];
na=length(a);
b=[1,5,1,4,4,2];
nb=length(b);
c=[1,3,-2,0,0,0,0,0];
nc=length(c);
d=[1,5,1,0,0,0,0,0];
nd=length(d);
A=fft(a);
B=fft(b);
C=fft(c);
D=fft(d);
wa=2*pi/na*(0:na-1);
wb=2*pi/nb*(0:nb-1);
wc=2*pi/nb*(0:nc-1);
wd=2*pi/nb*(0:nd-1);
subplot(1,3,1)
stem((0:na-1),a)
subplot(1,3,2)
stem(wa,A)
subplot(1,3,3)
stem((0:na-1),ifft(A))
stem((0:nb-1),b)
subplot(4,3,5)
stem(wb,B)
subplot(4,3,6)
stem((0:nb-1),ifft(B))
subplot(4,3,7)
stem((0:nc-1),c)
subplot(4,3,8)
stem(wc,C)
subplot(4,3,9)
stem((0:nc-1),ifft(C))
subplot(4,3,10)
stem((0:nd-1),d)
subplot(4,3,11)
stem(wd,D)
subplot(4,3,12)
stem((0:nd-1),ifft(D))
5 20 5

0 0 0

-5 -20 -5
0 5 0 5 10 0 5
5 20 5

0 -20 0
0 5 0 5 10 0 5
5 5 5

0 0 0

-5 -5 -5
0 5 10 0 5 10 0 5 10
5 10 5

0 0

0 -10 -5
0 5 10 0 5 10 0 5 10

2. Comprobacin de la Propiedad de Linealidad


La transformada de fourier de y(n) = k1.a(n) + k2.b(n), donde k1 y k2 son constantes, se puede
encontrar ya sea aplicando directamente la transformada o tambin de esta manera: Y(w) = k1.A(w)
+ k2.B(w). Comprobarlo para k1=2 y k2 =3 sustituidas en las seales definidas arriba

>> k1=2;k2=3;
>> y=k1*a+k2*b

y =

5 21 -1 16 20 12

>> Y=fft(y)

Y =

Columns 1 through 5

73.0000 -4.0000 +10.3923i -5.0000 -25.9808i -25.0000


-5.0000 +25.9808i

Column 6

-4.0000 -10.3923i

>> Y2=k1*A+k2*B
Y2 =

Columns 1 through 5

73.0000 -4.0000 +10.3923i -5.0000 -25.9808i -25.0000


-5.0000 +25.9808i

Column 6

-4.0000 -10.3923i
>> subplot(1,2,1);stem(Y);title('Transformada de
fourier');subplot(1,2,2);stem(Y2);title('Linealidad')

Transformada de fourier Linealidad


30 30

20 20

10 10

0 0

-10 -10

-20 -20

-30 -30
0 2 4 6 0 2 4 6

3. Comprobacin de que la convolucin en el dominio del tiempo es equivalente a la multiplicacin de los


espectros. La transformada de Fourier de: y(n) = a(n) * b(n), se puede encontrar (adems de directamente)
de la siguiente manera: Y(w) = A(w).B(w). Comprobarlo usando las funciones c(n) y d(n)
encontrar y1 = conv(c,d)
encontrar Y2 = C*D
encontrar y2 = ifft(Y2)
comparar y1 con y2
>> y1=conv(c,d);
>> Y2=C.*D;
>> y2=ifft(Y2);
>> subplot(1,2,1);stem(y1);title('Convolucion en el
tiempo');subplot(1,2,2);stem(y2);title('Multiplicacion de espectros')

Convolucion en el tiempo Multiplicacion de espectros


15 15

10 10

5 5

0 0

-5 -5

-10 -10
0 5 10 15 0 2 4 6 8

DTFT

4. Crear la funcin dtft.m que calcula la transformada de Fourier en tiempo discreto, comente cada
lnea de programa
function [H,W]=dtft(x,N)
% x: secuencia de L muestras, de la muestra L+1 a infinito la muestra toma valor 0.
% N: nmero de frecuencias a evaluar. N debe ser mayor que L.
% H: valores complejos de la DTFT
% W: vector de frecuencias correspondiente a la los valores H calculados
N=fix(N);
L=length(x);
if(L>N)
error(' DTFT: numero de muestras L, debe ser inferior al numero de frec a calcular N')
end
W=2*pi/N*(0:N-1);
medio=ceil(N/2)+1
W(medio:N)=W(medio:N)-2*pi;
W=fftshift(W);
H=fftshift(fft(x,N));

5. Explique la funcin que cumple el comando fftshift


En la funcin anterior se realiz un desplazamiento (fftshift) en frecuencias con objeto
de que los resultados de w se den en el intervalo [ -,].
6. Represente la dtft en mdulo y fase de la seal x[n]= 0.5n*exp ( j(2n/5)), con L= 32 y N=128
7. Compare los resultados y explique que sucede si se toman valores de N=32, N=64 y N=1024
8. Con N = 128 cambie el valor de L, por ejemplo L=10 y L=128, comente los resultados

FFT

Manera eficiente de calcular la DFT. En MATLAB la funcin es

>> X=fft(x,N)

Calcula la FFT de N puntos del vector x, el resultado X es un vector de nmeros complejos


ordenados con ndice k=0,1, ...N-1. Si no se da el segundo parmetro se considera como N la longitud
del vector. Para que el algoritmo sea eficiente N debe ser potencia de 2. Si la longitud de x es menor
que N, el vector se rellena con ceros. Si es mayor el vector es truncado.

>> x = ifft(X)

Calcula la transformada de Fourier inversa del vector X. Tambin se puede especificar el nmero de
puntos N con ifft(X,N)

>> X=fftshift(x)

Reordena el vector X en orden creciente de frecuencias de tal manera que la componente continua
queda centrada.

9. Calcular la DFT para la secuencia x[n] = cos(0.2n) + cos(0.4n)+ cos(0.45n). Se pide


utilizando la funcin matlab fft(x,N) con N=L= longitud de las secuencia x[n] y representar su
mdulo para diferentes valores de nmero de muestras L (16,32,64,128). Indique a partir de qu
valor de N son distinguibles las tres frecuencias de la seal.
L=16
35

30

25

20

15

10

0
0 10 20 30 40 50 60 70

L=32;
20

18

16

14

12

10

0
0 5 10 15 20 25 30 35

L=64
35

30

25

20

15

10

0
0 10 20 30 40 50 60 70

L=128
50

45

40

35

30

25

20

15

10

0
0 20 40 60 80 100 120 140

10. Indique cmo estn relacionados los valores de L, N y la resolucin en frecuencias


11. Compruebe que sucede en el espectro de la seal si una secuencia de L= 90 muestras de x[n] se
rellena con ceros hasta N=128.
12. Calcular la inversa de la funcin X(w) utilizando la funcin ifft(X) para recuperar la seal en el
dominio de tiempo.
13. Suponga que se desea estudiar el contenido en fecuencias usando la FFT, de la siguiente seal x(t)
= 0.05cos(2p(200)t + 1.5) + 0.14 cos(2p(400)t + 1.8) + 0.5 cos(2p(500)t - 0.2) + 0.3cos(2p(1600)t
-1.4) + 0.1cos(2p(1700)t). Halle la frecuencia fundamental. Indique la frecuencia de muestreo
necesaria. Estime un valor adecuado de N. Represente |X(w)| y la fase de X(w) en funcin de w.
14. Calcule la inversa de la funcin X(w) utilizando la funcion ifft (X) para recuperar la seal en el
dominio de tiempos.

Enventanado

Sea la secuencia x[n] = sen(2n/5)

Limitar la secuencia de entrada al intervalo 0, L-l es equivalente a multiplicar la seal de entrada x[n]
por una ventana rectangular w(n) de longitud L= 40 donde

w[n] = l para 0 <= n < L-l


w[n] = 0 para el resto

15. Represente el espectro de las seales w[n], x[n] y del producto y[n]=w[n]*x[n]. Utilice la funcin
fft calculando un nmero suficiente de valores (N=128) para explicar los resultados anteriores.

n=0:246;x=sin(2*pi*n/5);
w=[ones(1,128) zeros(1,247-128)];
xw=x.*w;
subplot(3,1,1);stem(fft(x),'b');title('Espectro
x[n]');subplot(3,1,2);stem(fft(w),'m');title('Espectro
w[n]');subplot(3,1,3);stem(fft(xw),'k');title('Espectro seal y[n]')

ParaN=40

Espectro x[n]
40

20

-20

-40
0 50 100 150 200 250

Espectro w[n]
40

20

-20

-40
0 50 100 150 200 250

Espectro seal y[n]


20

10

-10

-20
0 50 100 150 200 250

Para N=128
Espectro x[n]
40

20

-20

-40
0 50 100 150 200 250

Espectro w[n]
100

50

-50

-100
0 50 100 150 200 250

Espectro seal y[n]


50

-50
0 50 100 150 200 250

Para N=256
Espectro x[n]
200

-200
0 50 100 150 200 250 300 350 400 450 500
Espectro w[n]
200

-200
0 50 100 150 200 250 300 350 400 450 500
Espectro seal y[n]
200

-200
0 50 100 150 200 250 300 350 400 450 500

16. Explique, a partir de los espectros anteriores, la relacin del valor mximo obtenido en el eje de
ordenadas al representar |Y(w)| con los parmetros L y N.

Leakage

17. Tomar N= 8 muestras de 0 < t < 1 ms. Cul es la frecuencia de muestreo Fs? Representar la
seal en el tiempo y su espectro de frecuencias

>> Ts=0.001/8

Ts =

1.2500e-04

>> Fs=1/Ts
Fs =

8000

Seal x en tiempo
1

0.5

-0.5

-1
0 10 20 30 40 50 60

Espectro seal X
10

-5

-10
0 10 20 30 40 50 60

18. Tomar N= 24 muestras considerando el intervalo 0 < t < 1.5 ms. Representar la seal en el tiempo
y su espectro de frecuencias
Seal x en tiempo
1

0.5

-0.5

-1
0 10 20 30 40 50 60

Espectro seal X
20

10

-10

-20
0 10 20 30 40 50 60

19. Tomar N= 64 muestras considerando el intervalo 0 < t < 4 ms. Representar la seal en el tiempo y
su espectro de frecuencias

>> Ts=0.004/64

Ts =

6.2500e-05

>> Fs=1/Ts

Fs =

16000
Seal x en tiempo
1

0.5

-0.5

-1
0 10 20 30 40 50 60

Espectro seal X
20

10

-10

-20
0 10 20 30 40 50 60

20. Explicar que valores de tamao de la ventana son los adecuados para reducir el efecto de
"Leakage"

El valor del tamao de la ventana para evitar el leakage es de 4 ms ya que reduce las
frecuencias que aparecen a continuacin del espectro.

CUESTIONARIO FINAL

1. Qu es la resolucin espectral?Cmo se evala en MatLab?

2. Proponga un programa que extraiga una componente espectral de una seal?

CONCLUSIONES

Вам также может понравиться