12 votos

¿Por qué no la transformada de Fourier de una sola onda sinusoidal ciclo de una sola barra?

He intentado diferentes transformada de Fourier de códigos por ahí en una sola ondas sinusoidales, y todos ellos producen un espectro distribuido con una resonancia en la frecuencia de la señal cuando teóricamente debería mostrar una sola barra.

La frecuencia de muestreo tiene poco efecto (10kHz aquí), sin embargo el número de ciclos:

Un ciclo:

enter image description here

100 ciclos:

enter image description here

100000 ciclos:

enter image description here

Parece que la transformada de fourier converge sólo para un número infinito de ciclos, ¿por qué? No debería de una ventana de tiempo de exactamente un ciclo de dar el mismo resultado que el de N ciclos?

Aplicación: Este es a la vez de curiosidad y también porque quiero lo mucho que la respuesta al escalón de un sistema de primer orden será emocionante la resonancia de un conjunto mecánico. Por lo tanto, tengo una precisa la transformada de Fourier de la respuesta... Que no tengo más confianza. ¿Qué podría hacer yo para mejorar la precisión, sobre la base del "sine wave" caso?

enter image description here

P. S: Estas capturas de pantalla se basan en el código aquí.

29voto

Li-aung Yip Puntos 5571

Esta es una de ventanas artefacto.

El vinculado código de pastillas de 10.000 muestras de la señal con ceros, de modo que la longitud es una potencia de dos.

%% Author :- Embedded Laboratory

%%This Project shows how to apply FFT on a signal and its physical 
% significance.

fSampling = 10000;          %Sampling Frequency
tSampling = 1/fSampling;    %Sampling Time
L = 10000;                  %Length of Signal
t = (0:L-1)*tSampling;      %Time Vector
F = 100;                    %Frequency of Signal

%% Signal Without Noise
xsig = sin(2*pi*F*t);
...

%%Frequency Transform of above Signal
subplot(2,1,2)
NFFT = 2^nextpow2(L);
Xsig = fft(xsig,NFFT)/L;
...

Tenga en cuenta que en el código anterior, la FFT se toma con el tamaño de FFT NFFT que es la siguiente potencia de 2 mayor que la longitud de la señal (en este caso, de 16.384.) Desde el Mathworks fft() documentación:

Y = fft(X,n) devuelve el n-punto de la DFT. fft(X) es equivalente a fft(X, n) donde n es el tamaño de la X en el primer nonsingleton dimensión. Si la longitud de X es menor que n, X se rellena con ceros a la longitud n. Si la longitud de X es mayor que n, la secuencia X se trunca. Cuando X es una matriz, la longitud de las columnas se ajustan de la misma manera.

Esto significa que usted no está realmente teniendo una FFT de una 'onda sinusoidal pura' - se está tomando la FFT de una onda sinusoidal con una señal plana después de ella.

Esto es equivalente a tomar la FFT de una onda sinusoidal se multiplicaron con una ventana cuadrada de la función. El espectro FFT es la convolución de la onda sinusoidal de la frecuencia (espectro de un impulso de la función) con el cuadrado de la onda del espectro de frecuencias (sinc(f).)

Si cambias L = 16,384 , de modo que no hay ningún cero de relleno de la señal, se observa a un perfect FFT.

Más palabras clave de búsqueda: "Fuga Espectral", "la Función de la Ventana", "Ventana de Hamming".


Edit: me limpiaron un poco de material que escribí sobre este tema de nuevo en la universidad, que entra en mucho más detalle. He publicado en mi blog.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X