¿Puedo obtener ayuda sobre cómo hacer que el eje de frecuencia pase de frecuencia negativa a frecuencia positiva (en hertzios), que será el eje x en un resultado FFT, pero dado un FFT de longitud par o FFT de longitud impar. Tengo problemas para hacerlo en MATLAB. (Suponga que conoce la frecuencia de muestreo f_s).
frequency-spectrum
frequency
TheGrapeBeyond
fuente
fuente
Respuestas:
Un enfoque es simplemente calcular el vector de frecuencia para la salida DFT no desplazada (es decir, lo que obtendría directamente de la
fft()
función de MATLAB , sin hacer unfftshift()
), y luego reasignar las frecuencias que corresponden a ubicaciones en el lado negativo del eje. Ejemplo:La respuesta proporcionada por learnvst también debería funcionar; esta es solo otra forma de pensar que no requiere ninguna carcasa especial para tamaños DFT pares / impares.
fuente
Puede hacer un espectro de frecuencia positivo de manera bastante simple (donde
fs
está la frecuencia de muestreo yNFFT
el número de contenedores fft). En la implementación de Matlab del algoritmo FFT, el primer elemento es siempre el componente DC, de ahí que la matriz comience desde cero. Esto es cierto para los valores pares e impares de NFFT.Si necesita ajustar el espectro de frecuencia, debe tener en cuenta si tiene una NFFT con un número impar. Siempre tiene que haber un componente DC , entonces. .
Observe cómo el cálculo del eje de frecuencia positiva es idéntico al anterior, pero el término desplazado FFT cambia para adaptarse a longitudes FFT pares o impares.
Estos fragmentos de código se tomaron de una respuesta larga publicada en SO (que puede resultarle interesante) que se encuentra aquí: /programming/9694297/matlab-fft-xaxis-limits-messing-up-and-fftshift/ 9699983 # 9699983
fuente