Разновидности БПФ. Эффективность использования разных методов. Простое разделение сигнала пополам

Страницы работы

Уважаемые коллеги! Предлагаем вам разработку программного обеспечения под ключ.

Опытные программисты сделают для вас мобильное приложение, нейронную сеть, систему искусственного интеллекта, SaaS-сервис, производственную систему, внедрят или разработают ERP/CRM, запустят стартап.

Сферы - промышленность, ритейл, производственные компании, стартапы, финансы и другие направления.

Языки программирования: Java, PHP, Ruby, C++, .NET, Python, Go, Kotlin, Swift, React Native, Flutter и многие другие.

Всегда на связи. Соблюдаем сроки. Предложим адекватную конкурентную цену.

Заходите к нам на сайт и пишите, с удовольствием вам во всем поможем.

Содержание работы

N

4

128

1024

8192

КУВ

4

35,6

205

1263

Не всегда удобно использовать БПФ, т. к. часто нас интересует не весь спектр, а только его часть, где мы ожидаем найти спектр сигнала, например, по результатам предварительных вычислений, то удобней использовать ДПФ.

Чаще всего эта процедура состоит из двух этапов: сначала вычисляется БПФ с небольшим числом отсчетов, и по результатам находят грубо положение максимума спектра. Затем в области этого максимума выполняется ДПФ с добавлением нулевых отсчетов к исходным отсчетам сигнала, чтобы улучшить детальность спектра.

Разновидности БПФ

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

По эффективности оба этих метода эквивалентны и позволяют уменьшить число требуемых арифметических операций.

Алгоритм с прореживанием по частоте заключается в простом разделении сигнала пополам.

РИСУНОК СИГНАЛА

Каждый из этих массивов еще может делиться пополам (пока не будет по 2 отсчета)

Особенностью этих 2-х алгоритмов заключается в том, что когда мы делаем прореживание по отсчетам, мы должны переставить их в двоично-инверсном порядке, но отсчеты спектра получаются в естественном порядке. Если же мы делаем прореживание по частоте, то в результате расчета отсчеты спектра получаются в двоично-инверсном порядке, т.е. надо выполнить такую же перестановку.

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

          

Упростим выражение

Получим что

РИСУНОК ПРИМЕРА

Особенности практической реализации БПФ

Анализируя направленный  граф БПФ можно выявить два аспекта:

1.  доступ к данным и запоминание промежуточного результата

2.  конкретный способ вычислений типа бабочка

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

Другая особенность состоит в том, что при вычислении алгоритма бабочка мы должны каждый раз вычислять комплексный множитель . Его надо вычислять на каждом шаге или заранее рассчитывать и запоминать в виде таблицы.

 - рекурсивная формула

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

Вычисление корреляционного интеграла на основе БПФ

Если , то , где  - номер отсчета во время сдвига

В основе вычислений лежит теорема свертки:

   если  или , то получается в 10 раз лучше.

Для вычисления АКФ

 - преобразование Винера-Хинчина

Использование БПФ для интерполяции функции времени

 конечное число отсчетов дает ошибку.

1. 

2.  добавляем нули в

3.  находим ОБПФ

, а

Похожие материалы

Информация о работе

Уважаемые коллеги! Предлагаем вам разработку программного обеспечения под ключ.

Опытные программисты сделают для вас мобильное приложение, нейронную сеть, систему искусственного интеллекта, SaaS-сервис, производственную систему, внедрят или разработают ERP/CRM, запустят стартап.

Сферы - промышленность, ритейл, производственные компании, стартапы, финансы и другие направления.

Языки программирования: Java, PHP, Ruby, C++, .NET, Python, Go, Kotlin, Swift, React Native, Flutter и многие другие.

Всегда на связи. Соблюдаем сроки. Предложим адекватную конкурентную цену.

Заходите к нам на сайт и пишите, с удовольствием вам во всем поможем.