Professional Documents
Culture Documents
n=[0:29];
x=cos(2*pi*n/10);
N1=64;
N2=128;
N3=256;
X1=abs(fft(x,N1));
X2=abs(fft(x,N2));
X3=abs(fft(x,N3));
F1=[0:N1-1]/N1;
F2=[0:N2-1]/N2;
F3=[0:N3-1]/N3;
plot(F1,X1,'-x'),title('N=64'),axis([0 1 0 20])
plot(F2,X2,'-x'),title('N=128'),axis([0 1 0 20])
PASO 2
SI N es el mismo numero de muestras N4=30
>> n=[0:29];
>> x=cos(2*pi*n/10);
>> N1=64;
>> N2=128;
>> N3=256;
>> N4=30;
>> X1=abs(fft(x,N1));
>> X2=abs(fft(x,N2));
>> X3=abs(fft(x,N3));
>> X4=abs(fft(x,N4));
>> F1=[0 : N1-1]/N1;
>> F2=[0 : N2-1]/N2;
>> F3=[0 : N3-1]/N3;
>> F4=[0 : N4-1]/N4;
>> plot(F1,X1,'-x'),title('N=64'),axis([0 1 0 20])
>> plot(F2,X2,'-x'),title('N=128'),axis([0 1 0 20])
>> plot(F3,X3,'-x'),title('N=256'),axis([0 1 0 20])
>> plot(F4,X4,'-x'),title('N=30'),axis([0 1 0 20])
n=[0:29];
>> x1=cos(2*pi*n/10);
>> x2=[x1 x1];
>> x3=[x1 x1 x1];
>> N=2048;
>> X1=abs(fft(x1,N));
>> X2=abs(fft(x2,N));
>> X3=abs(fft(x3,N));
>> F=[0:N-1]/N;
>> subplot(3,1,1)
>> plot(F,X1),title('3 periods'),axis([0 1 0 50])
>> subplot(3,1,2)
>> plot(F,X2),title('6 periods'),axis([0 1 0 50])
>> subplot(3,1,3)
>> plot(F,X3),title('9 periods'),axis([0 1 0 50])
Al utilizar la FFT para calcular la DFT de una señal discreta, observamos que directamente
no nos da el espectro de una señal. Como hemos visto los dos últimos experimentos, la
FFT puede variar enormemente dependiendo del número de muestras N de la FFT, y el
número de períodos de la señal de que están representados. Hay otro problema también.
La FFT contiene información que está entre 0 y la frecuencia de muestreo fs., sin embargo,
sabemos que la frecuencia de muestreo debe ser de al menos dos veces el componente
de mayor frecuencia. Por lo tanto, la señal del espectro debe estar por debajo de fs/2.
Recordamos también que una verdadera señal presenta en su transformada una magnitud
simétrica para las frecuencias positivas y negativas. Así que en vez de tener un espectro
que va desde 0 a fs, sería más apropiado para mostrar el espectro de –fs/2 a fs/2. Esto
puede ser logrado mediante el uso de Matlabfftshift:
>> clear
>> n=[0:149];
>> x1=cos(2*pi*n/10);
>> N=2048;
>> X=abs(fft(x1,N));
>> X=fftshift(X);
>> F=[-N/2:N/2-1]/N;
>> plot(F,X);
>> xlabel('frequency / f s')