Может кто-нибудь объяснить, что означает вывод fft в MATLAB? - PullRequest
0 голосов
/ 17 апреля 2010
>> fft([1 4 66])

ans =

  71.0000           -34.0000 +53.6936i -34.0000 -53.6936i

Может кто-нибудь объяснить по приведенному выше результату?

Ответы [ 2 ]

5 голосов
/ 18 апреля 2010

РЕДАКТИРОВАТЬ Ну, это стыдно. Я пропустил коэффициент 2. Обновленный ответ следует ...

Дискретное преобразование Фурье, которое алгоритм FFT вычисляет быстро, предполагает, что входные данные длиной N представляют собой один период периодического сигнала. Период составляет 2*pi rad. Частота выходных точек определяется как 2*n*pi/N rad/sec, где n - это индекс от 0 до N-1.

Для вашего примера, 71 - это значение в 0 rad/sec, обычно называемое DC, -34+53.7i - это значение в 2*pi/3 rad/sec, а его сопряженное - это значение в 4*pi/3 rad/sec. Обратите внимание, что по периодичности 2*pi/3 rad/sec = -2*pi/3 rad/sec = 4*pi/3 rad/sec. Так что вторую половину спектра можно рассматривать как частоты от -pi..0 или pi..2*pi.

Если данные представляют данные выборки с постоянной частотой выборки, и вы знаете эту частоту выборки, вы можете преобразовать rad/sec в Hz. Пусть частота дискретизации будет deltaT. Его обратная частота дискретизации Fs. Тогда период равен T = N*deltaT sec = 2*pi rad. 1/T дает разрешение по частоте deltaF = Fs/N Hz. Поэтому частота выходных точек составляет n*Fs/N Hz.

0 голосов
/ 17 апреля 2010

Это вектор комплексных чисел , представляющих ваш сигнал в частотной области.

...