¿Cómo obtener una onda sinusoidal después de un pie?

-3

Realicé fft en matlab en y = sin (2 * pi * t), con un período de tiempo de T = 0.015. Ahora quiero recuperar la función original en el dominio del tiempo, pero no estoy seguro de cómo puedo usar ifft para hacerlo. Me da la respuesta equivocada cada vez. ¿Podría alguien explicarme cómo hacer esto?

    
pregunta Kaya311

2 respuestas

1

Bueno, aquí hay un poco de código MATLAB que funciona (16,384 puntos FFT en una muestra de 240 segundos, rellenado con ceros).

dt = 0.015;
tmax = 240;
x = 0:dt:tmax;
y = sin(2*pi*x);
N = 2^14;
transformed_y = fft(y,N)*dt;
ft = 1/dt;
f = (0:(N-1)/2)/N*ft;
recovered_y = ifft(transformed_y,N,'symmetric')/dt;
x_recovered = 0:1/ft:(length(recovered_y)-1)*1/ft;
plot(x_recovered, recovered_y,'g')

(yzoomalprincipiodelatrama)

    
respondido por el Spehro Pefhany
2

Está comenzando con una onda sinusoidal de 1 Hz, pero la está muestreando con un período de 0.015 segundos, que corresponde a una frecuencia de muestreo de 66.667 muestras / segundo.

Debido a esta relación no-entera entre la frecuencia de la señal y la frecuencia de muestreo, su "señal" (la onda sinusoidal) no cae directamente en una "caja de frecuencia" del resultado de la FFT; en su lugar, obtienes "desbordamiento" en contenedores adyacentes.

Cuando intenta reconstruir la señal del dominio del tiempo, este desbordamiento causa lo que parece ser una distorsión de la forma de onda, aunque si lo verifica cuidadosamente, la forma de onda reconstruida tiene los mismos valores que la forma de onda original en el muestreo original. puntos .

    
respondido por el Dave Tweed

Lea otras preguntas en las etiquetas