Документация Engee

БПФ

Быстрое преобразование Фурье (БПФ) входного сигнала.

Тип: FFT

Путь в библиотеке:

/Signal Operations/Transforms/FFT

Описание

Блок БПФ вычисляет быстрое преобразование Фурье (БПФ) по первому измерению многомерного входного массива .

Блок использует одну из двух возможных реализаций БПФ. Можно выбрать реализацию, основанную на библиотеке Кули — Тьюки, или реализацию, основанную на алгоритме Кули — Тьюки по основанию 2. Подробнее см. в разделе Алгоритмы.

Когда длина входного сигнала больше длины БПФ , вы можете наблюдать увеличение амплитуды выходного сигнала. Это происходит из-за того, что блок БПФ использует сброс данных по модулю длины , чтобы сохранить все доступные входные отсчеты.

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

Порты

Вход

# IN_1 — входной сигнал
вектор | матрица| многомерный массив

Details

Входной сигнал для вычисления БПФ в виде вектора, матрицы или многомерного массива.

Блок вычисляет БПФ по первому измерению многомерного входного сигнала.

Типы данных

Float16, Float32, Float64, Int8, Int16, Int32, Int64, UInt8, UInt16, UInt32, UInt64

Поддержка комплексных чисел

Да

Выход

# OUT_1 — БПФ входного сигнала
вектор | матрица| многомерный массив

Details

БПФ, вычисленное по первому измерению многомерного входного массива, возвращаемое в виде вектора, матрицы или многомерного массива.

-я запись -го выходного канала равна -й точке -точечного дискретного преобразования Фурье (ДПФ) -го входного канала:

Типы данных

Float16, Float32, Float64, Int8, Int16, Int32, Int64, UInt8, UInt16, UInt32, UInt64

Поддержка комплексных чисел

Да

Параметры

Основные

# Реализация БПФ — реализация БПФ
Кули — Тьюки по основанию 2 | Кули — Тьюки

Details

Реализация БПФ:

  • Кули — Тьюки — поддержка входного сигнала произвольной длины;

  • Кули — Тьюки по основанию 2 — реализация побитовой обработки данных. Размерность входной матрицы размером на должна быть равна степени двойки. Для работы с другими размерами входных данных используйте блок Pad, чтобы выровнять или усечь эти размеры до степени двойки, или, если возможно, выберите реализацию Кули — Тьюки.

Значения

Radix-2 | FFTW

Значение по умолчанию

Radix-2

Имя для программного использования

FFTImplementation

Настраиваемый

Нет

Вычисляемый

Нет

# Вывод в обратном порядке по битам — вывод в бит-реверсном порядке
Логический тип

Details

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

Блок БПФ вычисляет свой выход в бит-реверсном порядке. Линейное упорядочивание выходных данных блока БПФ требует дополнительной операции обратного преобразования битов. Во многих ситуациях можно увеличить скорость работы блока БПФ, установив флажок Вывод в обратном порядке по битам.

Зависимости

Чтобы использовать этот параметр, установите для параметра Реализация БПФ значение Кули — Тьюки по основанию 2.

Значение по умолчанию

false (выключено)

Имя для программного использования

OutInBitReversedOrder

Настраиваемый

Нет

Вычисляемый

Нет

# Разделить выход на длину БПФ — разделить выход на длину БПФ
Логический тип

Details

Если этот флажок установлен, то блок делит выход БПФ на длину БПФ. Эта опция полезна, когда вы хотите, чтобы выход БПФ оставался в том же диапазоне амплитуд, что и вход.

Значение по умолчанию

false (выключено)

Имя для программного использования

DivideOutput

Настраиваемый

Нет

Вычисляемый

Нет

# Наследовать длину БПФ от входных размеров — наследовать длину БПФ от входных размеров
Логический тип

Details

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

Зависимости

Если этот флажок не установлен, для задания длины становится доступным параметр Длина БПФ.

Значение по умолчанию

true (включено)

Имя для программного использования

InheritFFTLength

Настраиваемый

Нет

Вычисляемый

Нет

# Длина БПФ — длина БПФ
Целое число типа Int64

Details

Укажите длину БПФ в виде целого числа, являющегося степенью двойки.

Если для параметра Реализация БПФ установлено значение Кули — Тьюки по основанию 2 или установлен флажок Вывод в обратном порядке по битам, это значение должно быть равно степени числа два.

Зависимости

Чтобы использовать этот параметр, снимите флажок Наследовать длину БПФ от входных размеров.

Значение по умолчанию

64

Имя для программного использования

FFTLength

Настраиваемый

Нет

Вычисляемый

Да

# Свертка входных данных, когда длина БПФ меньше длины ввода — свертка или усечение входных данных
Логический тип

Details

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

Зависимости

Чтобы использовать этот параметр, снимите флажок Наследовать длину БПФ от входных размеров.

Значение по умолчанию

true (включено)

Имя для программного использования

WrapInputData

Настраиваемый

Нет

Вычисляемый

Нет

Алгоритмы

Реализация FFTW

Реализация FFTW обеспечивает оптимизированный расчет БПФ, включая поддержку длин преобразований, равных и не равных степени двойки, как при моделировании. Тип входных данных должен быть с плавающей точкой.

Реализация Radix-2

Реализация Radix-2 поддерживает бит-реверсную обработку и позволяет блоку выполнить генерацию C кода. Размерность входной матрицы размером на должна быть равна степени двойки. Для работы с другими размерами входных данных используйте блок Pad, чтобы дополнить или усечь эти размеры до степени двойки.

При выборе Radix-2 блок реализует один или несколько из следующих алгоритмов:

  • операция «бабочка»;

  • алгоритм двойного сигнала;

  • алгоритм половинной длины;

  • алгоритм прореживания во времени (DIT) Radix-2;

  • алгоритм прореживания по частоте (DIF) Radix-2.

Алгоритмы Radix-2 для вещественных и комплексных сигналов

Комплексность входных данных Порядок выходных данных Алгоритмы, используемые для расчета БПФ

Комплексный

Линейный

Операция бит-реверсирования и алгоритм Radix-2 DIT

Комплексный

Бит-реверсный

Radix-2 DIF

Вещественный

Линейный

Операция бит-реверсирования и Radix-2 DIT в сочетании с алгоритмами половинной длины и двойного сигнала

Вещественный

Бит-реверсный

Radix-2 DIF в сочетании с алгоритмами половинной длины и двойного сигнала

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

Оптимизация Radix-2 для таблицы тригонометрических значений

В некоторых ситуациях алгоритм Radix-2 блока вычисляет все возможные тригонометрические значения поворачивающего множителя (twiddle factor):

π

где

  • — большее значение из двух величин: или ;

  • .

Блок хранит эти значения в таблице и извлекает их во время моделирования. Количество записей для плавающей точки составляет .

Литература

  1. Orfanidis, S. J. Introduction to Signal Processing. Upper Saddle River, NJ: Prentice Hall, 1996, p. 497.

  2. Proakis, John G. and Dimitris G. Manolakis. Digital Signal Processing, 3rd ed. Upper Saddle River, NJ: Prentice Hall, 1996.

  3. FFTW (https://www.fftw.org)

  4. Frigo, M. and S. G. Johnson, FFTW: An Adaptive Software Architecture for the FFT, Proceedings of the International Conference on Acoustics, Speech, and Signal Processing, Vol. 3, 1998, pp. 1381-1384.