http://nbviewer.jupyter.org/gist/leftaroundabout/83df89a7d3bdc24373ea470fb50be629
ДПФ, размер 16
БПФ, размер 16
Разница в сложности довольно очевидна из этого, не так ли?
Вот как я понимаю БПФ.
FT : L2( R ) → L2( R )
R→CВ простейшем случае ваша функция непрерывна, и вы делите ее на настолько маленькие области, что она в основном постоянна в каждой из них. Тогда каждый из STFT имеет наиболее сильный нулевой член. Если вы игнорируете (в любом случае затухающие) другие коэффициенты, то каждый домен - это просто одна точка данных. Из всех этих кратковременных LF-предельных коэффициентов вы можете взять дискретное преобразование Фурье. Фактически, это именно то, что вы делаете, выполняя любой FT на измеренных реальных данных!
Однако измеренные данные не обязательно должны соответствовать фундаментальной физической величине. Например, когда вы измеряете некоторую интенсивность света , вы на самом деле просто измеряете амплитуду электромагнитной волны, частота которой сама по себе слишком высока, чтобы ее можно было дискретизировать с помощью АЦП. Но очевидно, что вы также можете вычислить ДПФ для дискретизированного сигнала интенсивности света, причем дешево, несмотря на безумную частоту световой волны.
Это можно понять как наиболее важную причину дешевизны БПФ:
Не пытайтесь увидеть отдельные циклы колебаний с самого высокого уровня. Вместо этого преобразуйте только несколько высокоуровневую информацию, которая уже была предварительно обработана локально.
Но это еще не все. Самое замечательное в FFT - это то, что он по- прежнему дает вам всю информацию, которую мог бы предоставить полный DFT . Т.е. вся информация, которую вы также получите, когда будете отбирать точную электромагнитную волну светового луча. Может ли это быть достигнуто путем преобразования сигнала фотодиода? - Вы можете измерить точную частоту света от этого?
Δ ν= 1 / Δ т
Имея в целом более длительный промежуток времени, мы также сможем сузить частотную неопределенность. И это действительно возможно, если вы измеряете локально не только грубую частоту, но и фазу волны. Вы знаете, что сигнал 1000 Гц будет иметь точно такую же фазу, если вы посмотрите на него через секунду. Принимая во внимание, что сигнал с частотой 1000,5 Гц, будучи неразличимым на короткой шкале, через секунду перевернет фазу.
К счастью, эта фазовая информация очень хорошо может быть сохранена в одном комплексном числе. И вот как работает БПФ! Это начинается с множества небольших локальных преобразований. Они дешевы - во-первых, очевидно, потому что они используют только небольшой объем данных, а во-вторых, потому что они знают, что из-за короткого промежутка времени они не могут точно разрешить частоту в любом случае - так что это по-прежнему доступно, даже если вы сделать много таких преобразований.
Однако они также записывают фазу , и из этого вы можете сделать разрешение частоты более точным на верхнем уровне. Требуемое преобразование опять-таки дешево, поскольку оно само по себе не беспокоит высокочастотные колебания, а только предварительно обработанные низкочастотные данные.
† Да, моя аргументация на данный момент немного круглая. Давайте просто назовем это рекурсивным, и мы в порядке ...
‡ Это соотношение не является квантово-механическим, но неопределенность Гейзенберга имеет фактически ту же фундаментальную причину.