En MATLAB, los resultados de las funciones fft
y / o a ifft
menudo requieren un procesamiento adicional antes de ser considerados para el análisis.
He escuchado muchas opiniones diferentes sobre lo que es correcto:
Escalada
Mathworks afirma que
fft
y lasifft
funciones se basan en las siguientes ecuaciones:Escalado por longitud de señal
Mis compañeros suelen escalar los datos en inmediatamente después del procesamiento de la
fft
.
(No consideramos losfft
datos enbrutoantes de escalar).%% Realizar fft
X_f = fft (x, n_sample, 1) / n_sample; % fft debe normalizarse por el número de muestras en los datos. % Esta convención fue establecida por el desarrollador de software (Mathworks).¿Es esto correcto?
- Si es así, ¿por qué la
ifft
función MATLAB espera que no hayamos escalado en ? - ¿Existe una
ifft
función o opción de función MATLAB que no se escala automáticamente en ?
Alternativamente, ¿hay una convención mejor que deberíamos usar para colocar el ? Por ejemplo, colocando 1 / N en lugar de , o colocando 1 / √
fft
ifft
en ambas ecuaciones, en lugar de un1/N?- Si es así, ¿por qué la
Escalado por período de muestreo
He oído que las funciones
fft
yifft
suponen que el período de muestreo , y que para que las funciones sean verdaderas, lo siguiente necesitaría aplicar:
Ver enlaces:
- Enlace 1 (ver comentario a Matt Szelistowski por el Dr. Seis)
- Enlace 2 (véase la respuesta de Rick Rosson frente a la del Dr. Seis)
- Enlace 3 (ver comentario de Matt (Mensaje: 7/16) y comentario de Poorya (14/16)
- Enlace 4 (ver página 10, diapositiva [1,1])
- Enlace 5 (ver páginas 8 + 9) [parece que está usando la convención inversa para fft y ifft].
¿Es esto cierto?
Estoy particularmente molesto porque no puedo encontrar ninguna ecuación DFT o DTFT en Wikipedia que incluya el período de muestreo.