Что такое интуитивное объяснение алгоритма FFT? - PullRequest
0 голосов
/ 30 сентября 2019

Что такое интуитивное объяснение алгоритма БПФ? Где это срезать углы / оптимизировать? Как это учитывает фазу?

1 Ответ

1 голос
/ 01 октября 2019

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

Для строго реального ввода - ДПФэто просто N корреляций с набором ортогональных синусоидальных волн и N корреляций с набором ортогональных косинусных волн в диапазоне частот от постоянного тока до половины частоты дискретизации. (В сложной форме косинусные корреляции являются реальной частью, а синусные корреляции - мнимой составляющей). Все эти корреляции могут быть выполнены с помощью умножения комплексной матрицы N * N.

Фаза - это просто отношение (atan2 ()) косинусных корреляций (четная часть) и синусоидальных корреляций (нечетная часть),входного сигнала. например, форма сигнала, абсолютно симметричная вокруг центра окна DFT, будет иметь нулевую фазу, а форма сигнала, абсолютно антисимметричная вокруг центра, будет иметь фазу pi или -pi. И любой (непатологический реальный) сигнал может быть разложен на пару четных и нечетных сигналов и, таким образом, имеет некоторую фазу (через atan2 ()) каждого синусоидального компонента, привязанную к краям окна DFT (или к центру). , если вы делаете fftshift заранее).

Для комплексного ввода есть аналогичная сложная арифметическая формулировка всего вышеперечисленного, использующая корреляции с единичными комплексными экспонентами (вместо синусов и косинусов).

...