FFT
Быстрое преобразование Фурье (БПФ) входного сигнала.
Тип: FFT
Путь в библиотеке:
|
Описание
Блок FFT вычисляет быстрое преобразование Фурье (БПФ) по первому измерению многомерного входного массива .
Блок использует одну из двух возможных реализаций БПФ. Можно выбрать реализацию, основанную на библиотеке FFTW, или реализацию, основанную на алгоритме Radix-2. Подробнее см. в разделе Алгоритмы.
|
Когда длина входного сигнала больше длины БПФ , вы можете наблюдать увеличение амплитуды выходного сигнала. Это происходит из-за того, что блок FFT использует сброс данных по модулю длины , чтобы сохранить все доступные входные отсчеты. Чтобы избежать такого увеличения амплитуды, можно усечь длину входной выборки до длины БПФ . Для этого поместите в модель блок Pad перед блоком FFT. |
Порты
Вход
#
IN_1
—
входной сигнал
вектор | матрица| многомерный массив
Details
Входной сигнал для вычисления БПФ в виде вектора, матрицы или многомерного массива.
Блок вычисляет БПФ по первому измерению многомерного входного сигнала.
| Типы данных |
|
| Поддержка комплексных чисел |
Да |
Выход
#
OUT_1
—
БПФ входного сигнала
вектор | матрица| многомерный массив
Details
БПФ, вычисленное по первому измерению многомерного входного массива, возвращаемое в виде вектора, матрицы или многомерного массива.
-я запись -го выходного канала равна -й точке -точечного дискретного преобразования Фурье (ДПФ) -го входного канала:
| Типы данных |
|
| Поддержка комплексных чисел |
Да |
Параметры
Основные
#
FFT implementation —
реализация БПФ
Radix-2 | FFTW
Details
Реализация БПФ:
-
FFTW— поддержка входного сигнала произвольной длины; -
Radix-2— реализация побитовой обработки данных. Размерность входной матрицы размером на должна быть равна степени двойки. Для работы с другими размерами входных данных используйте блок Pad, чтобы выровнять или усечь эти размеры до степени двойки, или, если возможно, выберите реализациюFFTW.
| Значения |
|
| Значение по умолчанию |
|
| Имя для программного использования |
|
| Настраиваемый |
Нет |
| Вычисляемый |
Нет |
#
Output in bit-reversed order —
вывод в бит-реверсном порядке
Logical
Details
Указывает порядок элементов выходного канала относительно порядка элементов входного. При установке этого флажка элементы выходного канала отображаются в бит-реверсном порядке относительно порядка входной последовательности. Если снять этот флажок, то элементы выходного канала будут отображаться в линейном порядке относительно порядка входной последовательности.
| Блок FFT вычисляет свой выход в бит-реверсном порядке. Линейное упорядочивание выходных данных блока FFT требует дополнительной операции обратного преобразования битов. Во многих ситуациях можно увеличить скорость работы блока FFT, установив флажок Output in bit-reversed order. |
Зависимости
Чтобы использовать этот параметр, установите для параметра FFT implementation значение Radix-2.
| Значение по умолчанию |
|
| Имя для программного использования |
|
| Настраиваемый |
Нет |
| Вычисляемый |
Нет |
#
Divide output by FFT length —
разделить выход на длину БПФ
Logical
Details
Если этот флажок установлен, то блок делит выход БПФ на длину БПФ. Эта опция полезна, когда вы хотите, чтобы выход БПФ оставался в том же диапазоне амплитуд, что и вход.
| Значение по умолчанию |
|
| Имя для программного использования |
|
| Настраиваемый |
Нет |
| Вычисляемый |
Нет |
#
Inherit FFT length from input dimensions —
наследовать длину БПФ от входных размеров
Logical
Details
Выберите, чтобы наследовать длину БПФ от входных размеров. При установке этого флажка длина входных данных должна быть равна степени двойки.
Зависимости
Если этот флажок не установлен, для задания длины становится доступным параметр FFT length.
| Значение по умолчанию |
|
| Имя для программного использования |
|
| Настраиваемый |
Нет |
| Вычисляемый |
Нет |
#
FFT length —
длина БПФ
Int64 integer
Details
Укажите длину БПФ в виде целого числа, являющегося степенью двойки.
Если для параметра FFT implementation установлено значение Radix-2 или установлен флажок Output in bit-reversed order, это значение должно быть равно степени числа два.
Зависимости
Чтобы использовать этот параметр, снимите флажок Inherit FFT length from input dimensions.
| Значение по умолчанию |
|
| Имя для программного использования |
|
| Настраиваемый |
Нет |
| Вычисляемый |
Да |
#
Wrap input data when FFT length is shorter than input length —
свертка или усечение входных данных
Logical
Details
Выбор свертки или усечения входных данных в зависимости от длины БПФ. Если выбрать этот параметр, перед операцией БПФ происходит свертка по модулю, когда длина БПФ меньше длины входа. Если снять этот флажок, то перед операцией БПФ происходит усечение входных данных до длины БПФ.
Зависимости
Чтобы использовать этот параметр, снимите флажок Inherit FFT length from input dimensions.
| Значение по умолчанию |
|
| Имя для программного использования |
|
| Настраиваемый |
Нет |
| Вычисляемый |
Нет |
Алгоритмы
Реализация 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):
где
-
— большее значение из двух величин: или ;
-
.
Блок хранит эти значения в таблице и извлекает их во время моделирования. Количество записей для плавающей точки составляет .
Литература
-
Orfanidis, S. J. Introduction to Signal Processing. Upper Saddle River, NJ: Prentice Hall, 1996, p. 497.
-
Proakis, John G. and Dimitris G. Manolakis. Digital Signal Processing, 3rd ed. Upper Saddle River, NJ: Prentice Hall, 1996.
-
FFTW (https://www.fftw.org)
-
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.