Могу ли я получить помощь о том, как сделать так, чтобы ось частоты переходила от отрицательной частоты к положительной частоте (в герцах), которая будет осью X в результате FFT, но с учетом либо FFT четной длины, либо FFT нечетной длины. У меня есть некоторые проблемы с этим в MATLAB. (Предположим, вы знаете частоту дискретизации f_s).
frequency-spectrum
frequency
TheGrapeBeyond
источник
источник
Ответы:
Один из подходов состоит в том, чтобы просто рассчитать вектор частоты для несмещенного вывода ДПФ (то есть того, что вы получите непосредственно из
fft()
функции MATLAB , без выполнения операцииfftshift()
), а затем переназначить частоты, которые соответствуют местоположениям на отрицательной стороне оси. Пример:Ответ, предоставленный learnvst, также должен работать; это просто еще один способ думать об этом, который не требует специального корпуса для четных / нечетных размеров DFT.
источник
Вы можете сделать положительный частотный спектр довольно просто (где
fs
частота дискретизации иNFFT
количество бин FFT). В реализации алгоритма FFT в Matlab первый элемент всегда является компонентом DC, поэтому массив начинается с нуля. Это верно для нечетных и четных значений NFFT.Если вам нужно обернуть частотный спектр, вы должны принять во внимание, есть ли у вас нечетный NFFT. Всегда должен быть компонент постоянного тока , поэтому. ,
Обратите внимание, что вычисление положительной оси частоты идентично приведенному выше, но член со смещением FFT изменяется, чтобы соответствовать четным или нечетным длинам FFT.
Эти фрагменты кода были взяты из длинного ответа, размещенного на SO (который может показаться вам интересным), найденного здесь: /programming/9694297/matlab-fft-xaxis-limits-messing-up-and-fftshift/ 9699983 # 9699983
источник