Diferencia entre revisiones de «Transformada de Fourier y muestreo de señales»

De MateWiki
Saltar a: navegación, buscar
Línea 284: Línea 284:
  
  
[[Archivo:Ainara26.jpg|centro|imagen]]
+
[[Archivo:Ainara27.jpg|centro|imagen]]
  
  
 +
===Dibujar la DFT y la DTFT (con N=2<sup>12</sup> puntos) en la misma gráfica, reescaladas por la frecuencia de muestreo para que representen las aproximaciones de la FT.===
  
 +
 +
{{matlab|codigo=
 +
 +
%Frecuencia de muestreo
 +
 +
Fs=32;
 +
 +
%intervalo
 +
 +
t=0:1/Fs:1; 
 +
 +
%frecuencia de la senal
 +
 +
F0=-7;
 +
 +
%senal
 +
 +
f=exp(i*2*pi*F0*t)
 +
 +
%numero d puntos de la DTFT
 +
 +
N=2^12
 +
 +
%DTFT
 +
 +
dtft=abs(fftshift(fft(f,N)))
 +
tau=-(1/2):1/N:1/2-1/N;
 +
 +
%DFT
 +
 +
dft=abs(fftshift(fft(f)))
 +
p=length(t);
 +
tau2=-1/2:1/p:1/2-1/p;
 +
 +
hold on
 +
figure (1)
 +
subplot(1,2,1)
 +
plot(tau,dtft)
 +
title('dtft')
 +
subplot(1,2,2)
 +
plot(tau2,dft)
 +
title('dft')
 +
 +
figure (2)
 +
subplot(1,2,1)
 +
plot(tau*Fs,dtft/Fs)
 +
title('dtft reescalada')
 +
subplot(1,2,2)
 +
plot(tau2*Fs,dft/Fs,'*-')
 +
title('dft reescalada')
 +
}}
  
  

Revisión del 22:23 12 nov 2014


1 Ejercicio

Consideramos la señal:

f(t)= eF02Πit + 1/2 cos(F12Πt) + cos (F22Πt)

con F0=8; F1=8.2 y F2=40.

Se pide:

1.1 Calcular la transformada de Fourier.

Descomponemos la señal:

Señal → FT

eF02Πit → δ0(Ί)

cos(F12Πt) → (δa(Ί)+ δ-a(Ί))/2

cos (F22Πt) → (δa(Ί)+ δ-a(Ί))/2

%ejercicio1

clear all

%Frecuencias 

F0=8; F1=8.2; F2=40;

P=100;

%Intervalo

t=0:1/P:1;

%Senal 

f=exp(F0*2*pi*t*i);

g=(1/2)*cos(F1*2*pi*t);

h=cos(F2*2*pi*t);

i=f+g+h;

%Transformada de fourier

dft=abs(fftshift(fft(f)))

dft1=abs(fftshift(fft(g)));

dft2=abs(fftshift(fft(h)));

dft3=abs(fftshift(fft(i)));

%Para rescalar

tau2=[-1/2:1/P:1/2];

%Dibujamos

figure(1)

subplot (1,3,1)

plot(tau2*P,dft/P,'k')

title('exp(F0*2*pi*t*i)')

subplot (1,3,2)

plot(tau2*P,dft1/P,'b')

title('(1/2)*cos(F1*2*pi*t)')

subplot (1,3,3)

plot(tau2*P,dft2/P,'g')

title('cos(F2*2*pi*t)')

figure (2)

plot(tau2*P,dft3/P,'r')


imagen


imagen

1.2 Muestrearla a 12 Hz en el intervalo [0,1] y representar la señal muestreada.

1.2.1 Representar también la aproximación de la Transformada de Fourier (FT) usando la DFT con el mismo número de puntos que la muestra.

1.2.2 ¿En qué frecuencias están los picos de la DFT y dónde debería estar?

%ejercicio1_ap2

clear all

%Frecuencias

F0=8; F1=8.2; F2=40;

%Frecuencia de muestreo

Fs=12; 

%Intervalo

t=0:1/Fs:1;

%Senal

f=exp(F0*2*pi*t*i);

g=(1/2)*cos(F1*2*pi*t);

h=cos(F2*2*pi*t);

i=f+g+h;

%Dibujo del muestreo

figure (1)

plot(t,i,'*-')

title('senal muestreada')

%DFT

dft3=abs(fftshift(fft(i)));

p=length(t);

%Rescalar

tau2=[-1/2:1/p:1/2-1/p];

%Dibujo de la dft

figure(2)

plot(tau2*Fs,dft3/Fs,'ro-')

title('DFT')


imagen


imagen


Los picos de la DFT estan aproximadamente en el -4 y en el 3, cuando deberíamos de tener 5 picos. Esto sucede ya que la frecuencia de muestreo es inferior a 2B (Dos veces el ancho de la banda). La frecuencia más alta es de 40 Hz, por lo que la frecuencia de muestreo mínima para obtener los resultados esperados debería de ser de 80 Hz.

1.3 Repetir el caso anterior con un muestreo a 5 Hz, 20 Hz, 40 Hz, 50 Hz y 100 Hz. En todos los casos mantener la ventana temporal t € [0,1]. ¿Mejora el error que cometemos en las frecuencias?

Como hemos comentado en el apartado anterior hasta que la frecuencia de muestreo no sea mayor a 80 Hz, los resultados no serán los correctos, como podemos ver en las siguientes imágenes.

imagen


imagen


imagen


imagen


Esto se debe al aliasing, es decir, al ser las frecuencias de muestreo muy bajas, se meten dentro de manera descolocada (sin ningún tipo de orden).


imagen


1.4 Ahora vamos a aumentar la ventana temporal fijando la frecuencia de muestreo a 30 Hz. Muestrear la señal en los intervalo temporales [0,1],[0,2],[0,10] y [0,100]. ¿ En qué frecuencia están los picos de la FT y donde deberían estar? ¿Qué error se comete?

%ejercicio1_ap2
clear all
%frecuencia

F0=8; F1=8.2; F2=40;

%frecuencia de muestreo

Fs=30; 

%intervalo [0,1][0,2][0,10][0,100]
a=1; 
t=0:1/Fs:a;

%senal

f=exp(F0*2*pi*t*i);
g=(1/2)*cos(F1*2*pi*t);
h=cos(F2*2*pi*t);
i=f+g+h;

%Dibujar senal muestreada

figure (1)
plot(t,i,'*-')
title('senal muestreada [0,1]')

%DFT

dft3=abs(fftshift(fft(i)));
p=length(t);
tau2=[-1/2:1/p:1/2-1/p];

%dibujar DFT

figure(2), hold on
plot(tau2*Fs,dft3/Fs,'r')
title('DFT [0,1]')


imagen


imagen


imagen


imagen


La frecuencia de muestreo es de 30 Hz, por lo que únicamente podremos ver aquellas frecuencias inferiores a 15 Hz. Debido a ello, las frecuencias de 40 Hz, no se ven en su correspondiente lugar por el efecto del aliasing. Por otro lado, tenemos que mencionar que debido al intervalo de tiempo, a medida que aumentamos el intervalo las campanas se van estrechando cada vez más.

1.5 ¿Qué diferencias hay entre el apartado 2 y 3?

1.6 El Teorema de Shanon nos dice que con un muestreo a 12 Hz es posible reconstruir una señal banda-limitada mediante la siguiente formula.

imagen


1.6.1 Dibujar F(t), tomando sumando desde n=-40 hasta n=40. Comparar en la misma gráfica f(t) y su reconstrucción F(t). ¿Qué relación hay entre ellas?

2 Ejercicio

En este ejercicio se trata de entender cómo diferentes ventanas afectan a la DTFT. Tomaremos una señal f(t)= e2ΠiF0t con F0=-7. Se pide :

2.1 Dibujar la señal y su muestreo a 32 Hz en el tiempo T=1 en la misma gráfica.

%frecuencia de muestreo

Fs=32;

%intervalo 

t=0:1/Fs:1;  

%frecuencia senal

F0=-7;

%senal

f=exp(i*2*pi*F0*t)

%dibujar
hold on
plot(t,f,'r') %Señal
plot(t,f,'*')   %Muestreo


imagen


2.2 Dibujar la DFT y la DTFT (con N=212 puntos) en la misma gráfica, reescaladas por la frecuencia de muestreo para que representen las aproximaciones de la FT.

%Frecuencia de muestreo

Fs=32;

%intervalo

t=0:1/Fs:1;  

%frecuencia de la senal

F0=-7;

%senal

f=exp(i*2*pi*F0*t)

%numero d puntos de la DTFT

N=2^12

%DTFT 

dtft=abs(fftshift(fft(f,N)))
tau=-(1/2):1/N:1/2-1/N;

%DFT 

dft=abs(fftshift(fft(f)))
p=length(t);
tau2=-1/2:1/p:1/2-1/p;

hold on
figure (1)
subplot(1,2,1)
plot(tau,dtft)
title('dtft')
subplot(1,2,2)
plot(tau2,dft)
title('dft')

figure (2)
subplot(1,2,1)
plot(tau*Fs,dtft/Fs)
title('dtft reescalada')
subplot(1,2,2)
plot(tau2*Fs,dft/Fs,'*-')
title('dft reescalada')