Frecuencia de muestreo y FFT

0

He probado este código de ejemplo para muestreo y FFT en MATLAB, pero he notado que cuando la frecuencia de la señal se acerca a la frecuencia de nyquist, comienzan a aparecer algunos errores (pequeños componentes de frecuencia cerca de las frecuencias de señal dadas) en el dominio de la frecuencia. arriba. ¿Hay alguna explicación para esta situación?

close all;clear all; clc;
freq = 100;
freq1 = 1000;  
freq2 = 2000;  
freq3 = 3000;  
freq4 = 4000;  
Fs    = 10000;
t = 0:1/Fs:1;

x = cos(2*pi*freq*t) + cos(2*pi*freq1*t)+cos(2*pi*freq2*t) ...
    +cos(2*pi*freq3*t)+cos(2*pi*freq4*t);
tempfft = abs(fftshift(fft(x)));
figure;
stem(0:floor(Fs/2),tempfft(floor(Fs/2):Fs));

    
pregunta rcmalli

1 respuesta

2

En los comentarios, usted dice que los "errores" en los que está interesado son la respuesta FFT no cero en las frecuencias cercanas a las frecuencias de la señal.

Esos están causados por las ventanas .

Su vector de tiempo, generado por la expresión 0:1/Fs:1 , tiene 10,001 elementos, y su ventana de muestreo es de 1,0001 segundos. Por lo tanto, no contiene un número entero de ciclos de ninguna de sus señales de entrada. Por lo tanto, la secuencia de dominio de tiempo truncado contiene componentes en las frecuencias ligeramente fuera de las frecuencias previstas.

Si usaste

t = 1/Fs:1/Fs:1

para generar el vector de tiempo, tendrías ciclos completos de formas de onda de señal y no verías este efecto.

    
respondido por el The Photon

Lea otras preguntas en las etiquetas