Есть ли БПФ, который использует логарифмическое деление частоты?
Wikipedia Вейвлет-статья содержит этот текст:
Дискретное вейвлет-преобразование также меньше вычислительно сложно, учитывая время O (N) по сравнению с O (N log N) для быстрого преобразования Фурье a > . Это вычислительное преимущество не является неотъемлемой частью преобразования, но отражает выбор логарифмического деления частоты, в отличие от разнесенных частотных делений БПФ.
Означает ли это, что существует также FFT-подобный алгоритм, который использует логарифмическое деление частоты вместо линейного? Это также O (N)? Это, очевидно, было бы предпочтительнее для многих приложений.
Ответы
Ответ 1
Да. Да. Номер
Это называется логарифмическим преобразованием Фурье. У него есть O (n) время. Однако это полезно для функций, которые медленно распадаются с увеличением области/абсциссы.
Возвращаясь к статье в Википедии:
Основное отличие заключается в том, что вейвлеты локализованы как во времени, так и частота, тогда как стандарт Фурье преобразование только локализовано в частота.
Так что, если вы можете быть локализованы только во времени (или в пространстве, выберите свою интерпретацию абсциссы), то вейвлеты (или дискретное косинусное преобразование) являются разумным подходом. Но если вам нужно продолжать и продолжать, вам нужно преобразование Фурье.
Узнайте больше о LFT на http://homepages.dias.ie/~ajones/publications/28.pdf
Вот тезисы:
Мы представляем точное и аналитическое выражение для преобразования Фурье функции, которая была выбрана логарифмически. Процедура значительно более эффективна в вычислительном отношении, чем быстрое преобразование Фурье (БПФ) для преобразования функций или измеренных откликов, которые медленно затухают с увеличением значения абсциссы. Мы иллюстрируем предложенный метод на примере электромагнитной геофизики, где масштабирование часто таково, что следует применять наше логарифмическое преобразование Фурье (LFT). Для выбранного примера мы можем получить результаты, которые согласуются с результатами БПФ, с точностью до 0,5% за время, которое в 1,0е2 раза меньше. Потенциальные приложения нашего LFT в геофизике включают преобразование широкополосных электромагнитных частотных откликов в переходные, ледниковую нагрузку и разгрузку, проблемы подпитки водоносного горизонта, исследования нормальных мод и приливов в сейсмологии, а также моделирование импульсных ударных волн.
Ответ 2
Чтобы сделать то, что вы хотите, вам нужно измерить разное время Windows, что означает, что более низкие частоты получают обновление менее часто (обратно пропорционально степеням 2).
Проверьте FPPO здесь:
https://www.rationalacoustics.com/files/FFT_Fundamentals.pdf
Это означает, что более высокие частоты будут обновляться чаще, но вы всегда в среднем (скользящее среднее - это хорошо), но также позволяет двигаться быстрее. Конечно, если вы планируете использовать обратный БПФ, вы не хотите этого. Кроме того, чтобы иметь лучшую точность (меньшую ширину полосы) на более низких частотах, это означает, что их нужно обновлять гораздо медленнее, например 16k Windows (1/3 м/с).
Да, низкочастотный сигнал, естественно, медленно движется, и, конечно, вам нужно много времени, чтобы обнаружить их. Это не проблема, которую может исправить математика. Это естественная торговля, и вы не можете иметь высокую точность, более низкую частоту и быструю реакцию.
Я думаю, что ссылка, которую я предоставляю, прояснит некоторые из ваших вариантов... через 7 лет после того, как вы задали вопрос, к сожалению.
Ответ 3
EDIT: после этого я думаю, что этот алгоритм не очень полезен для этого вопроса, я дам описание в любом случае для других читателей.
Существует также алгоритм Филона метод, основанный на четвертой степени Филона, который можно найти в Numerical Recipes this [PhD тезис] [1].
Шкала времени находится на расстоянии, равном результирующей частотной шкале.
Этот алгоритм используется для данных/функций, которые затухают до 0 в наблюдаемом временном интервале (что, вероятно, не в вашем случае), типичным простым примером будет экспоненциальный спад.
Если ваши данные отмечены точками (x_0, y_0), (x_1, y_1)... (x_i, y_i) и вы хотите рассчитать спектр A (f), где f - частота от let say f_min = 1/x_max до f_max = 1/x_min
log разнесены.
Вещественную часть для каждой частоты f вычисляют следующим образом:
A (f) = сумма из я = 0... i-1 {(y_i + 1 - y_i)/(x_i + 1 - x_i) * [cos (2 * pi * f * t_i + 1) - cos (2 * pi * f * t_i)]/((2 * pi * f) ^ 2)}
Мнимая часть:
A (f) = y_0/(2 * pi * f) + сумма из я = 0... i-1 {(y_i + 1 - y_i)/(x_i + 1 - x_i) * [sin (2 * pi * f * t_i + 1) - sin (2 * pi * f * t_i)]/((2 * pi * f) ^ 2)}
[1] Blochowicz, Thomas: Широкополосная диэлектрическая спектроскопия в чистых и бинарных молекулярных стеклах. Университет Байройта, 2003, глава 3.2.3