Comprender el ejemplo de Matlab FFT

Resuelto me.at.coding asked hace 12 años • 4 respuestas

Soy nuevo en Matlab y FFT y quiero entender el ejemplo de Matlab FFT . Por ahora tengo dos preguntas principales:

1) ¿Por qué el eje x (frecuencia) termina en 500? ¿Cómo sé que no hay más frecuencias o simplemente se ignoran?

2) ¿Cómo sé que las frecuencias están entre 0 y 500? ¿No debería decirme la FFT en qué límites se encuentran las frecuencias? ¿La FFT solo devuelve el valor de amplitud sin la frecuencia?

¡Gracias por cualquier pista!


Ejemplo en cuestión:

Considere datos muestreados a 1000 Hz. Forme una señal que contenga una sinusoide de 50 Hz con una amplitud de 0,7 y una sinusoide de 120 Hz con una amplitud 1 y corrompela con un poco de ruido aleatorio de media cero:

Fs = 1000;                    % Sampling frequency
T = 1/Fs;                     % Sample time
L = 1000;                     % Length of signal
t = (0:L-1)*T;                % Time vector
% Sum of a 50 Hz sinusoid and a 120 Hz sinusoid
x = 0.7*sin(2*pi*50*t) + sin(2*pi*120*t); 
y = x + 2*randn(size(t));     % Sinusoids plus noise
plot(Fs*t(1:50),y(1:50))
title('Signal Corrupted with Zero-Mean Random Noise')
xlabel('time (milliseconds)')

dominio del tiempo

Convirtiendo al dominio de la frecuencia, la transformada discreta de Fourier de la señal ruidosa y se encuentra tomando la transformada rápida de Fourier (FFT):

NFFT = 2^nextpow2(L); % Next power of 2 from length of y
Y = fft(y,NFFT)/L;
f = Fs/2*linspace(0,1,NFFT/2+1);

% Plot single-sided amplitude spectrum.
plot(f,2*abs(Y(1:NFFT/2+1))) 
title('Single-Sided Amplitude Spectrum of y(t)')
xlabel('Frequency (Hz)')
ylabel('|Y(f)|')

dominio de la frecuencia

me.at.coding avatar May 25 '12 23:05 me.at.coding
Aceptado

1) ¿Por qué el eje x (frecuencia) termina en 500? ¿Cómo sé que no hay más frecuencias o simplemente se ignoran?

Termina en 500 Hz porque esa es la frecuencia Nyquist de la señal cuando se muestrea a 1000 Hz. Mire esta línea en el ejemplo de Mathworks:

f = Fs/2*linspace(0,1,NFFT/2+1);

El eje de frecuencia del segundo gráfico va de 0 a Fs/2, o la mitad de la frecuencia de muestreo. La frecuencia de Nyquist es siempre la mitad de la frecuencia de muestreo, porque por encima de eso se produce aliasing :Ilustración de alias

La señal se "doblaría" sobre sí misma y parecería tener una frecuencia igual o inferior a 500 Hz.

2) ¿Cómo sé que las frecuencias están entre 0 y 500? ¿No debería decirme la FFT en qué límites se encuentran las frecuencias?

Debido al "plegamiento" descrito anteriormente (la frecuencia de Nyquist también se conoce comúnmente como "frecuencia de plegado"), es físicamente imposible que aparezcan frecuencias superiores a 500 Hz en la FFT; las frecuencias más altas se "plegarán" y aparecerán como frecuencias más bajas.

¿La FFT solo devuelve el valor de amplitud sin la frecuencia?

Sí, la función MATLAB FFT solo devuelve un vector de amplitudes. Sin embargo, se asignan a los puntos de frecuencia que le pasa.

Déjame saber qué necesitas aclarar para poder ayudarte más.

kevlar1818 avatar May 25 '2012 16:05 kevlar1818

Hay algunos conceptos erróneos aquí.

Las frecuencias superiores a 500 se pueden representar en un resultado FFT de longitud 1000. Desafortunadamente, todas estas frecuencias se juntan y se mezclan en los primeros 500 contenedores de resultados FFT. Por lo tanto, normalmente no desea alimentar a una FFT con una señal que contenga frecuencias iguales o superiores a la mitad de la frecuencia de muestreo, ya que a la FFT no le importará y simplemente mezclará las frecuencias altas junto con las bajas (aliasing), lo que hace que el resultado sea bonito. mucho inútil. Es por eso que los datos deben filtrarse de paso bajo antes de muestrearlos y enviarlos a una FFT.

La FFT devuelve amplitudes sin frecuencias porque las frecuencias dependen, no sólo de la longitud de la FFT, sino también de la frecuencia de muestreo de los datos, que no forma parte de la FFT en sí ni de su entrada. Puede alimentar datos FFT de la misma longitud a cualquier frecuencia de muestreo, para obtener así cualquier rango de frecuencias.

La razón por la que los gráficos de resultados terminan en 500 es que, para cualquier entrada de datos real, las frecuencias por encima de la mitad de la longitud de la FFT son simplemente repeticiones reflejadas (conjugadas complejas) de los datos en la primera mitad. Como son duplicados, la mayoría de la gente simplemente los ignora. ¿Por qué trazar duplicados? La FFT calcula la otra mitad del resultado para las personas que alimentan la FFT con datos complejos (con componentes tanto reales como imaginarios), lo que crea dos mitades diferentes.

hotpaw2 avatar May 25 '2012 18:05 hotpaw2