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

FFT

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

fft

Описание

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

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

y = fft(u,M) # P ≤ M

Сброс:

y(:,L) = fft(datawrap(u(:,L),M)) # P > M; L = 1,...,N

Усечение:

y (:,L) = fft(u,M) # P > M; L = 1,...,N

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

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

Порты

Вход

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

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

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

Типы данных: Float16, Float32, Float64, Int8, Int16, Int32, Int64, UInt8, UInt16, UInt32, UInt64

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

Выход

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

Выходной сигнал, возвращаемый в виде вектора, матрицы или многомерного массива.

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

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

π

Типы данных: Float16, Float32, Float64, Int8, Int16, Int32, Int64, UInt8, UInt16, UInt32, UInt64

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

Параметры

Main

FFT implementation — реализация БПФ
Radix-2 (по умолчанию)
  • Radix-2 — реализация побитовой обработки данных с фиксированной или плавающей точкой. Размерность M входной матрицы размером M на N должна быть равна степени двойки. Для работы с другими размерами входных данных используйте блок Pad, чтобы выровнять или усечь эти размеры до степени двойки.

Output in bit-reversed order — вывод в бит-реверсном порядке
выключено (по умолчанию) | включено

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

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

Divide output by FFT length — разделить выход на длину БПФ
выключено (по умолчанию) | включено`

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

Inherit FFT length from input dimensions — наследовать длину БПФ от входных размеров
включено (по умолчанию) | выключено

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

Зависимости

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

FFT length — длина БПФ
64 (по умолчанию) | целое число

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

Зависимости

Чтобы использовать этот параметр, снимите флажок Inherit FFT length from input dimensions.

Wrap input data when FFT length is shorter than input length — свертка или усечение входные данные
включено (по умолчанию) | выключено

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

Зависимости

Чтобы использовать этот параметр, снимите флажок Inherit FFT length from input dimensions.

Алгоритмы

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

Реализация Radix-2 поддерживает бит-реверсную обработку и позволяет блоку выполнить генерацию C кода. Размерность входной матрицы размером M на N должна быть равна степени двойки. Для работы с другими размерами входных данных используйте блок 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)

π ,

где

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

  • .

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

Количество записей в таблице для N-точечной БПФ

с плавающей точкой

Библиография

  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.