Вычисление двумерного быстрого преобразования Фурье входа
Преобразовывает
visiontransforms
Блок 2-D FFT вычисляет быстрое преобразование Фурье (FFT). Блок выполняет расчет двумерной M-на-N входа матрицы за два шага. Сначала вычисляет одномерное БПФ по одной размерности (строка или столбец). Затем он вычисляет БПФ выхода первого шага по другой размерности (столбцу или строке).
Выход 2-D блока FFT эквивалентен MATLAB®
fft2
функция:
y = fft2(A) % Equivalent MATLAB code
Вычисление БПФ каждой размерности входа матрицы эквивалентно вычислению двумерного дискретного преобразования Фурье (ДПФ), которое определяется следующим уравнением:
где и .
Выход этого блока имеет те же размерности, что и вход. Если входной сигнал имеет тип данных с плавающей точкой, тип данных выходного сигнала использует тот же тип данных с плавающей точкой. В противном случае выходы могут быть любым типом данных с фиксированной точкой. Блок вычисляет масштабированные и не масштабированные версии БПФ.
Вход в этот блок может быть с плавающей точкой или с фиксированной точкой, вещественным или комплексным и сопряженным симметричным. Блок использует одну из двух возможных реализаций БПФ. Можно выбрать реализацию на основе библиотеки FFTW [1], [2] или реализацию на основе набора Radix-2 алгоритмов. Можно выбрать Auto
чтобы позволить блоку выбрать реализацию.
Порт | Описание | Поддерживаемые типы данных | Комплексные числа |
---|---|---|---|
Вход | Вектор или матрица значений интенсивности |
| Да |
Выход | 2-D БПФ входа | То же, что Input port | Да |
Реализация FFTW обеспечивает оптимизированное вычисление БПФ, включая поддержку длин преобразования «степень двойки» и «степень двойки» как в симуляции, так и в генерации кода. Сгенерированный код с использованием реализации FFTW будет ограничен теми компьютерами, которые способны запускать MATLAB. Тип входных данных должен быть с плавающей точкой.
Реализация Radix-2 поддержек обработку с обращением битов, данные с фиксированной или плавающей точкой и позволяет блоку предоставлять портативную Генерацию кода C, используя Simulink Coder. Размерности входа матрицы M и N должны быть степенями двойки. Чтобы работать с другими размерами входных параметров, используйте блок Image Pad, чтобы дополнить или обрезать эти размерности до степеней двойки, или, по возможности, выберите реализацию FFTW.
Когда Radix-2 выбран, блок реализует один или несколько следующих алгоритмов:
Операция с бабочкой
Сигнал double
Алгоритм половинной длины
Radix-2 алгоритм децимирования во времени (DIT)
Radix-2 алгоритм децимирования в частоте (DIF)
Другие настройки параметра | Алгоритмы, используемые для расчетов ОБПФ |
---|---|
Операция бабочки и radix-2 DIT | |
Radix-2 DIF | |
Операция Butterfly и radix-2 DIT в сочетании с алгоритмами половинной длины и сигнала double | |
Radix-2 DIF в сочетании с алгоритмами половинной длины и сигнала double |
Другие настройки параметра | Алгоритмы, используемые для расчетов ОБПФ |
---|---|
Операция бабочки и radix-2 DIT | |
Radix-2 DIF |
Примечание
Параметр Input is conjugate symmetric не может использоваться для сигналов с фиксированной точкой.
В определенных ситуациях алгоритм Radix-2 блока вычисляет все возможные тригонометрические значения коэффициента twiddle
где K - большее значение M или N и . Блок хранит эти значения в таблице и извлекает их во время симуляции. Количество записей в таблице для с фиксированной и с плавающей точками суммировано в следующей таблице:
Количество записей в таблице для N значений | |
---|---|
с плавающей точкой | 3 <reservedrangesplaceholder0>/4 |
фиксированная точка | N |
Следующие схемы показывают типы данных, используемые в блоке FFT для сигналов с фиксированной точкой. Можно задать синусоидальную таблицу, аккумулятор, выходные данные продукта и типы выходных данных, отображенные в схемах в диалоговом окне FFT, как обсуждается в Параметрах.
Входы в блок БПФ сначала приводятся к типу данных выходов и сохраняются в буфере выхода. Затем каждый каскад бабочки обрабатывает сигналы в типе данных аккумулятора, причем конечный выход бабочки переводится назад в тип выходных данных. Блок умножается в множителе twiddle перед каждым каскадом бабочки в БПФ децимации во времени и после каждого каскада бабочки в БПФ децимации в частоте.
Выход умножителя появляется в типе данных аккумулятора, потому что оба входов в умножитель являются комплексными. Для получения дополнительной информации о выполненном комплексном умножении смотрите Типы данных умножения.
Установите этот параметр равным FFTW
[1], [2] для поддержки входного сигнала произвольной длины. Блок ограничивает сгенерированный код с реализацией FFTW хостов-компьютеров способным запускать MATLAB.
Установите этот параметр равным Radix-2
для обработки с обращенным битом, данных с фиксированной или плавающей точкой или для портативной Генерации кода C с использованием Simulink Coder. Размерности входа матрицы M и N должны быть степенями двойки. Чтобы работать с другими размерами входных параметров, используйте блок Image Pad, чтобы дополнить или обрезать эти размерности до степеней двойки, или, по возможности, выберите реализацию FFTW. См. Radix-2 реализации.
Установите этот параметр равным Auto
чтобы позволить блоку выбрать реализацию БПФ. Для степени двойки длин преобразования, блок ограничивает сгенерированный код хостов-компьютеров MATLAB.
Определите порядок элементов выходного канала относительно упорядоченного расположения входных элементов. При установке этого флажка элементы выходного канала появляются в обратном битовом порядке относительно порядка входа. Если снять этот флажок, элементы выходного канала появятся в линейном порядке относительно порядка входа.
Линейное упорядоченное расположение выхода требует дополнительной манипуляции с сортировкой данных. Для получения дополнительной информации смотрите Обратный Битовый Порядок.
Когда вы выбираете этот параметр, блок делит выход БПФ на длину БПФ. Эта опция полезна, когда вы хотите, чтобы выход БПФ оставался на той же амплитуде, область значений и его вход. Это особенно полезно при работе с типами данных с фиксированной точкой.
Выберите Режимы округления для операций с фиксированной точкой. Значения синусоидальной таблицы не подчиняются этому параметру; вместо этого они всегда округляют до Nearest
.
Выберите режим переполнения для операций с фиксированной точкой. См. «Точность и область значений». Значения синусоидальной таблицы не подчиняются этому параметру; вместо этого они всегда насыщены.
Выберите способ задания размера слова для значений синусоидальной таблицы. Длина дроби значений синусоидальной таблицы всегда равна размеру слова минус единица. Можно задать этот параметр как:
Правило, которое наследует тип данных, например Inherit: Same word length as input
Выражение, которое вычисляет допустимый тип данных, например fixdt(1,16)
Значения синусоидальной таблицы не подчиняются параметрам Rounding mode и Saturate on integer overflow; вместо этого они всегда насыщены и округлены до Nearest
.
Укажите тип выходных данных продукта. Смотрите Типы данных с фиксированной точкой и Типы данных умножения для рисунков, описывающих использование типа выходных данных продукта в этом блоке. Можно задать этот параметр как:
Правило, которое наследует тип данных, например Inherit: Inherit via internal rule
Выражение, которое вычисляет допустимый тип данных, например fixdt(1,16,0)
Нажмите кнопку Show data type assistant, чтобы отобразить Data Type Assistant, которая помогает вам задать параметр Product output data type.
Дополнительные сведения см. в разделе «Установка типов данных с использованием помощника по типам данных» (Simulink).
Задайте тип данных аккумулятора. См. типы данных с фиксированной точкой для рисунков, описывающих использование типа данных аккумулятора в этом блоке. Можно задать этот параметр как:
Правило, которое наследует тип данных, например Inherit: Inherit via internal rule
Выражение, которое вычисляет допустимый тип данных, например fixdt(1,16,0)
Нажмите кнопку Show data type assistant, чтобы отобразить Data Type Assistant, которая помогает вам задать параметр Accumulator data type.
Дополнительные сведения см. в разделе «Установка типов данных с использованием помощника по типам данных» (Simulink).
Задайте тип выходных данных. См. типы данных с фиксированной точкой для рисунков, описывающих использование типа выходных данных в этом блоке. Можно задать этот параметр как:
Правило, которое наследует тип данных, например Inherit: Inherit via internal rule
.
Когда вы выбираете Inherit: Inherit via internal rule
блок вычисляет выход размера слова и длину дроби автоматически. Внутреннее правило сначала вычисляет идеальный выход размера слова и длину дроби, используя следующие уравнения:
Когда вы устанавливаете флажок Divide butterfly outputs by two, идеальное выходное слово и длины дроби те же, что и входное слово и длины дроби.
Когда вы снимаете флажок Divide butterfly outputs by two, блок вычисляет идеальное выходное слово и длины дроби согласно следующим уравнениям:
Используя эти идеальные результаты, внутреннее правило затем выбирает размеры слова и длины дробей, которые подходят для вашего оборудования. Для получения дополнительной информации см. раздел Наследование через внутреннее правило.
Выражение, которое вычисляет допустимый тип данных, например fixdt(1,16,0)
Нажмите кнопку Show data type assistant, чтобы отобразить Data Type Assistant, которая помогает вам задать параметр Output data type.
Дополнительные сведения см. в разделе «Установка типов данных с использованием помощника по типам данных» (Simulink).
Выберите этот параметр, чтобы инструменты с фиксированной точкой не переопределяли типы данных, заданные в маске блока. Для получения дополнительной информации см. fxptdlg
(Fixed-Point Designer), ссылочная страница на Fixed-Point Tool в Simulink® документация.
Два числа являются реверсированными по битам значениями друг друга, когда двоичное представление одного является зеркальным изображением двоичного представления другого. Для примера в трехбитовой системе один и четыре являются обратными по битам значениями друг друга, потому что трехбитовое двоичное представление единицы, 001, является зеркальным изображением трехбитового двоичного представления четырех, 100. Следующая схема показывает индексы строк в линейном порядке. Чтобы привести их в обратный битовый порядок
Преобразуйте индексы в их двоичное представление с минимальным количеством бит. В этом примере минимальное количество бит составляет три, потому что двоичное представление 7 равняется 111.
Найдите зеркальное изображение каждой двоичной записи и запишите его рядом с исходным двоичным представлением.
Переведите индексы назад в их десятичное представление.
Теперь индексы строк отображаются в обратном битовом порядке.
Если в 2-D окне параметров блоков БПФ установлен флажок Output in bit-reversed order, бит блока меняет порядок как столбцов, так и строк. Следующая схема иллюстрирует линейные и битово-противоположные выходы 2-D блока FFT. Значения выходы те же, но они появляются в другом порядке.
[1] FFTW (http://www.fftw.org)
[2] Frigo, M. and S. G. Johnson, «FFTW: An Adaptive Software Architecture for БПФ», Труды Международной конференции по акустике, речи и обработке сигналов, Vol. 3, 1998, pp. 1381-1384.
Программное обеспечение Computer Vision Toolbox™ | |
Программное обеспечение Computer Vision Toolbox | |
Программное обеспечение Computer Vision Toolbox | |
Программное обеспечение Computer Vision Toolbox | |
| Программное обеспечение Signal Processing Toolbox |
MATLAB | |
MATLAB | |
Simulink Coder | Функции Simulink Coder™ |