Помогите мне понять функцию FFT (Matlab)

1) помимо отрицательных частот, какая минимальная частота обеспечивается функцией FFT? Это ноль?
2) если он равен нулю, как мы строим ноль в логарифмической шкале?
3) результат всегда симметричен? Или это просто кажется симметричным?
4) Если я использую abs(fft(y)) для сравнения 2 сигналов, могу ли я потерять некоторую точность?

5 ответов


1) помимо отрицательных частот, какая минимальная частота обеспечивается функцией FFT? Это ноль?

fft(y) возвращает вектор с 0 - й по (N-1)-ю выборками DFT из y, где y (t) следует считать определенным на 0 ... N-1 (следовательно, "периодическое повторение" y (t) можно рассматривать как периодический сигнал, определенный над Z).

первая выборка fft(y) соответствует частоте 0. преобразование Фурье из реальных, дискретно-временных, периодических сигналов также имеет дискретную область, и она периодическая и Эрмитовая (см. ниже). Следовательно, преобразование для отрицательные частоты является конъюгатом соответствующих образцов для положительных частот.

например, если вы интерпретируете (периодическое повторение) y как периодический вещественный сигнал, определенный над Z (период дискретизации == 1), то область fft(y) следует интерпретировать как N равнорасположенных точек 0, 2π / N ... 2π(Н-1)/Н. Образцы преобразования на отрицательных частотах-π ... - π / N-конъюгаты образцов на частотах π ... π / N, и равны образцам на частотах π ... 2π(Н-1)/н. в.

2) Если это ноль, как мы строим ноль в логарифмической шкале?

если вы хотите нарисовать какой-то Bode plot вы можете построить преобразование только для положительных частот, игнорируя образцы, соответствующие самым низким частотам (в особое 0).

3) результат всегда симметрично? Или это просто кажется симметричным?

это Эрмитова симметричность если y реально: его реальная часть симметрична, его мнимая часть антисимметрична. Другими словами, его амплитуда симметрична, а фаза антисимметрична.

4) Если я использую abs(fft(y)) для сравнения 2 сигналов, могу ли я потерять некоторую точность?

если вы имеете в виду abs(fft(x - y)), это нормально, и вы можете использовать его, чтобы получить представление о частотном распределении разности (или ошибки, если x является оценкой y). Если вы имеете в виду abs(fft(x)) - abs(fft(y)) (???) вы теряете по крайней мере информацию о фазе.


Ну, если вы хотите понять быстрое преобразование Фурье, вы хотите вернуться к основам и понять сам DFT. Но, это не то, что вы просили, поэтому я просто предлагаю вам сделать это в свое время:)

но, отвечая на ваши вопросы:

  1. Да, (кроме негативов, как вы сказали) это ноль. Диапазон от 0 до (N-1) для n-точечного ввода.
  2. в MATLAB? Я не уверен, что понимаю ваш вопрос-постройте нулевые значения, как вы любое другое значение... Хотя, как справедливо отмечает duffymo, нет натуральный логарифм от ноль.
  3. это по существу похоже на функцию sinc (sine cardinal). Хотя это не обязательно будет симметрично.
  4. вы не потеряете точность, у вас будет только реакция величины (но я думаю, вы это уже знали).

Консалтинг "численные рецепты в C", Глава 12 "быстрое преобразование Фурье" говорит:

  1. диапазон частот от отрицательного fc до положительного fc, где fc-критическая частота Найквиста, равная 1/(2 * delta), где delta-интервал выборки. Так что частоты, конечно, могут быть отрицательными.

  2. вы не можете построить что-то, чего не существует. Нет естественного журнала нуля. Вы либо построите частоту как ось x, либо выберите диапазон, который не включает ноль для оси полу-журнала.

  3. наличие или отсутствие симметрии в диапазоне частот зависит от характера функции во временной области. Вы можете иметь график в частотной области, который не симметричен относительно оси y.

  4. Я не думаю, что принимать абсолютное значение, как это хорошая идея. Вы захотите прочитать гораздо больше о свертке, коррекции и обработке сигналов для сравнивать два сигнала.


  1. результат fft может быть 0. уже ответили другие люди.
  2. чтобы построить частоту 0, трюк состоит в том, чтобы установить ее на очень маленькое положительное число (я использую exp(-15) для этой цели).
  3. уже ответили другие люди.
  4. если вас интересует только величина, да вы можете сделать это. это применимо, скажем, ко многим проблемам обработки изображений.

половину вашего вопроса:

3) результаты работы БПФ зависят от характера сигнала; следовательно, нет ничего, требующего, чтобы он был симметричным, хотя если это так, вы можете получить дополнительную информацию о свойствах сигнала

4), который будет сравнивать величины пары сигналов, но при их равенстве не гарантирует, что БПФ идентичны (не забывайте о фазе). Однако этого может быть достаточно для ваших целей, но вы должны быть уверенный в этом.