Вычислите двумерное быстрое преобразование Фурье входа
Преобразовывает
visiontransforms
2D блок FFT вычисляет быстрое преобразование Фурье (FFT). Блок делает вычисление двумерной входной матрицы M на n на двух шагах. Сначала это вычисляет одномерный БПФ по одному измерению (строка или столбец). Затем это вычисляет БПФ вывода первого шага по другому измерению (столбец или строка).
Вывод 2D блока FFT эквивалентен
функции MATLAB® fft2
:
y = fft2(A) % Equivalent MATLAB code
Вычисление БПФ каждой размерности входной матрицы эквивалентно вычислению двумерного дискретного преобразования Фурье (DFT), которое задано следующим уравнением:
где и .
Вывод этого блока имеет те же размерности как вход. Если входной сигнал имеет тип данных с плавающей точкой, тип данных выходного сигнала использует тот же тип данных с плавающей точкой. В противном случае вывод может быть любым типом данных с фиксированной точкой. Блок вычисляет масштабируемые и немасштабированные версии БПФ.
Вход к этому блоку может быть или фиксированной точкой с плавающей точкой, действительной или комплексной, и сопряженной симметричный. Блок использует одну из двух возможных реализаций БПФ. Можно выбрать реализацию на основе библиотеки FFTW [1], [2], или реализацию на основе набора Основания 2 алгоритма. Можно выбрать Auto
, чтобы позволить блоку выбирать реализацию.
Порт | Описание | Поддерживаемые типы данных | Поддерживаемые комплексные числа |
---|---|---|---|
Входной параметр | Вектор или матрица значений интенсивности |
| Да |
Вывод | 2D БПФ входа | То же самое как Входной порт | Да |
Реализация FFTW оказывает оптимизированное вычисление БПФ включая поддержку для степени двойки, и не степень двойки преобразовывают длины и в симуляцию и в генерацию кода. Сгенерированный код с помощью реализации FFTW будет ограничен теми компьютерами, которые способны к рабочему MATLAB. Тип входных данных должен быть с плавающей точкой.
Основание 2 поддержки внедрения, инвертированная битом, обрабатывая, зафиксированные или данные с плавающей точкой, и, позволяет блоку обеспечивать портативную генерацию кода C с помощью Simulink Coder. Размерности входной матрицы, M и N, должны быть степенями двойки. Чтобы работать с другими входными размерами, используйте блок Image Pad, чтобы заполнить или обрезать эти размерности до степеней двойки, или, если возможно выбрать реализацию FFTW.
С Основанием 2 выбранных блок реализует один или несколько следующих алгоритмов:
Операция Butterfly
Алгоритм двойной сигнала
Поясной алгоритм
Основание 2 алгоритма десятикратного уменьшения вовремя (DIT)
Основание 2 алгоритма десятикратного уменьшения в частоте (DIF)
Другие установки параметров | Алгоритмы, используемые для вычисления ОБПФ |
---|---|
Операция Butterfly и основание 2 DIT | |
Основание 2 DIF | |
Операция Butterfly и основание 2 DIT в сочетании с поясными и алгоритмами двойными сигнала | |
Основание 2 DIF в сочетании с поясными и алгоритмами двойными сигнала |
Другие установки параметров | Алгоритмы, используемые для вычисления ОБПФ |
---|---|
Операция Butterfly и основание 2 DIT | |
Основание 2 DIF |
Параметр Input is conjugate symmetric не может использоваться для сигналов фиксированной точки.
В определенных ситуациях Основание блока 2 алгоритма вычисляют все возможные тригонометрические значения вертеть фактора
где K является большим значением или M или N и . Блок хранит эти значения в таблице и получает их во время симуляции. Количество записей таблицы для фиксированной точки и с плавающей точкой получено в итоге в следующей таблице:
Количество записей таблицы для БПФ n значений | |
---|---|
с плавающей точкой | 3 N/4 |
фиксированная точка | N |
Следующие схемы показывают типы данных, используемые в блоке FFT для сигналов фиксированной точки. Можно накрыть на стол синуса, аккумулятор, продукт вывод и типы выходных данных, отображенные в схемах в диалоговом окне FFT, как обсуждено в Параметрах.
Входные параметры к блоку FFT сначала брошены к типу выходных данных и сохранены в буфере вывода. Каждый этап бабочки затем процессы сигнализирует в типе данных аккумулятора с окончательным результатом бабочки, бросаемой в тип выходных данных. Блок умножается в вертеть факторе перед каждым этапом бабочки в БПФ десятикратного уменьшения вовремя и после каждого этапа бабочки в БПФ десятикратного уменьшения в частоте.
Вывод множителя появляется в типе данных аккумулятора, потому что оба из входных параметров ко множителю являются комплексными. Для получения дополнительной информации на комплексном выполняемом умножении, обратитесь к Типам данных Умножения.
Установите этот параметр на FFTW
[1], [2], чтобы поддержать входной сигнал произвольной длины. Блок ограничивает сгенерированный код с реализацией FFTW к хостам - компьютерам, способным к рабочему MATLAB.
Установите этот параметр на Radix-2
для инвертированной битом обработки, зафиксированных или данных с плавающей точкой, или для портативной генерации кода C с помощью Simulink Coder. Размерности входной матрицы, M и N, должны быть степенями двойки. Чтобы работать с другими входными размерами, используйте блок Image Pad, чтобы заполнить или обрезать эти размерности до степеней двойки, или, если возможно выбрать реализацию FFTW. Смотрите Основание 2 Реализации.
Установите этот параметр на Auto
, чтобы позволить блоку выбрать реализацию БПФ. Для не степень двойки преобразовывает длины, блок ограничивает сгенерированный код хостами - компьютерами MATLAB.
Определяйте порядок выходных элементов канала относительно упорядоченного расположения входных элементов. Когда вы устанавливаете этот флажок, выходные элементы канала появляются в инвертированном битом порядке относительно входного упорядоченного расположения. Если вы снимаете этот флажок, выходные элементы канала появляются в линейном порядке относительно входного упорядоченного расположения.
Линейно упорядоченное расположение вывода требует дополнительной манипуляции с сортировками данных. Для получения дополнительной информации смотрите Инвертированный Битом Порядок.
Когда вы выбираете этот параметр, блок делит вывод БПФ длиной БПФ. Эта опция полезна когда это необходимо вывод БПФ, чтобы остаться в той же амплитудной области значений как ее вход. Это особенно полезно при работе с типами данных с фиксированной точкой.
Выберите Rounding Modes для операций фиксированной точки. Табличные значения синуса не повинуются этому параметру; вместо этого, они всегда вокруг к Nearest
.
Выберите режим переполнения для операций фиксированной точки. Смотрите Точность и Область значений. Табличные значения синуса не повинуются этому параметру; вместо этого, они всегда насыщаются.
Выберите, как вы задаете размер слова значений таблицы синуса. Дробная длина табличных значений синуса всегда равняется размеру слова минус один. Можно установить этот параметр на:
Правило, которое наследовало тип данных, например, Inherit: Same word length as input
Выражение, которое оценивает к допустимому типу данных, например, fixdt(1,16)
Табличные значения синуса не повинуются параметры Saturate on integer overflow и Rounding mode; вместо этого, они всегда насыщаются и округляются к 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) для получения дополнительной информации.
Выберите этот параметр, чтобы препятствовать тому, чтобы Fixed-Point Tool заменили типы данных, которые вы задаете на маске блока. Для получения дополнительной информации смотрите fxptdlg
, страницу с описанием на Fixed-Point Tool в документации Simulink®.
Два числа являются инвертированными битом значениями друг друга, когда бинарное представление каждый - зеркальное отображение бинарного представления другого. Например, в трехбитной системе, один и четыре инвертированные битом значения друг друга, потому что трехбитное бинарное представление один, 001, является зеркальным отображением трехбитного бинарного представления четыре, 100. Следующая схема показывает индексы строки в линейном порядке. Помещать их в инвертированный битом порядок
Переведите индексы в их бинарное представление с минимальным количеством битов. В этом примере минимальное количество битов равняется трем, потому что бинарное представление 7 равняется 111.
Найдите зеркальное отображение каждой бинарной записи и запишите его около исходного бинарного представления.
Переведите индексы назад в их десятичное представление.
Индексы строки теперь появляются в инвертированном битом порядке.
Если на 2D диалоговом окне параметров блоков БПФ вы устанавливаете флажок Output in bit-reversed order, битные реверсы блока порядок и столбцов и строк. Следующая схема иллюстрирует линейные и инвертированные битом выходные параметры 2D блока FFT. Выходные значения являются тем же самым, но они появляются в различном порядке.
[1] FFTW (http://www.fftw.org
)
[2] Frigo, M. и С. Г. Джонсон, “FFTW: Адаптивная Программная архитектура для БПФ”, Продолжения Международной конференции по вопросам Акустики, Речи, и Обработки сигналов, Издания 3, 1998, стр 1381-1384.
Программное обеспечение Computer Vision Toolbox™ | |
Программное обеспечение Computer Vision Toolbox | |
Программное обеспечение Computer Vision Toolbox | |
Программное обеспечение Computer Vision Toolbox | |
Программное обеспечение Signal Processing Toolbox | |
MATLAB | |
MATLAB | |
Simulink Coder | Simulink Coder™ |