Обратное быстрое преобразование Фурье (IFFT) входного сигнала
Панель инструментов/преобразования системы DSP
Блок IFFT вычисляет обратное быстрое преобразование Фурье (IFFT) по первому измерению N-D входного массива. Блок использует одну из двух возможных реализаций БПФ. Можно выбрать реализацию на основе библиотеки FFTW или реализацию на основе набора алгоритмов Radix-2. Чтобы позволить блоку выбрать реализацию, можно выбрать Auto. Дополнительные сведения о реализациях FFT см. в разделе Алгоритмы.
При указании длины БПФ, не равной длине входного вектора (или первой размерности входного массива), блок реализует перенос данных с заполнением нуля, усечением или длиной по модулю M. Это происходит перед операцией IFFT. Для IFFT с P ≤ M:
y = ifft(u,M) % P ≤ MОбертка:
y(:,L) = ifft(datawrap(u(:,L),M)) % P > M; L = 1,...,NУсечение:
y (:,L) = ifft(u,M) % P > M; L = 1,...,NСовет
Когда входная длина P больше длины БПФ, M, вы можете увидеть увеличение величины выхода IFFT. Эти величины увеличиваются, поскольку блок IFFT использует обертку данных по модулю М для сохранения всех доступных входных выборок.
Чтобы избежать такого увеличения величины, можно усечь длину входного образца P до длины БПФ, М. Для этого поместите блок Pad перед блоком IFFT в модели.
Port_1 - Входной сигналВходной сигнал для вычисления IFFT. Блок вычисляет IFFT вдоль первого размера N-D входного сигнала. Входные данные могут быть плавающими или фиксированными, вещественными или комплексными и сопряженными симметричными.
Дополнительные сведения о том, как блок вычисляет IFFT, см. в разделе Описание и алгоритмы.
Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | fixed point
Поддержка комплексного номера: Да
Port_1 - IFFT входаIFFT, вычисленный по первому измерению N-D входного массива. Дополнительные сведения о том, как блок вычисляет IFFT, см. в разделе Описание и алгоритмы.
K-й вход Lth выходного канала, y (k, L), равен k-й точке M-точечного обратного дискретного преобразования Фурье (IDFT) Lth входного канала:
= 1,..., M
Выходные данные имеют те же размеры, что и входные данные. Если входной сигнал имеет тип данных с плавающей запятой, то тип данных выходного сигнала использует тот же тип данных с плавающей запятой. В противном случае результатом может быть любой тип данных с фиксированной точкой с подписью. Блок вычисляет масштабированные и немасштабированные версии IFFT.
Типы данных: single | double | int8 | int16 | int32 | fixed point
FFT implementation - Реализация БПФAuto (по умолчанию) | Radix-2 | FFTWЗадайте для этого параметра значение FFTW для поддержки входного сигнала произвольной длины. Блок ограничивает сгенерированный код с реализацией FFTW хост-компьютерами MATLAB ®.
Задайте для этого параметра значение Radix-2 для обработки с инвертированием битов, данных с фиксированной или плавающей запятой или создания портативного C-кода с использованием Coder™ Simulink ®. Размерность M входной матрицы M-by-N должна быть степенью два. Для работы с другими входными размерами используйте блок Pad для установки или усечения этих размеров до двух или, по возможности, выберите реализацию FFTW. Для получения дополнительной информации о алгоритмах, используемых Radix-2 режим, см. раздел Реализация Radix-2.
Задайте для этого параметра значение Auto чтобы позволить блоку выбрать реализацию FFT. Для входов с плавающей запятой с длинами преобразования, отличными от двух, алгоритм FFTW выбирается автоматически. В противном случае автоматически выбирается алгоритм Radix-2. Для длин преобразования, отличных от двух, блок ограничивает сгенерированный код хост-компьютерами MATLAB.
Input is in bit-reversed order - Вход выполнен в бит-реверсированном порядкеoff (по умолчанию) | onУстановите или снимите этот флажок, чтобы обозначить порядок элементов входного канала. Установите этот флажок, когда вход находится в обратном порядке, и снимите его, когда вход находится в линейном порядке. Блок выдает недопустимые выходные данные, если этот параметр не задан правильно.
Этот флажок нельзя установить, если флажок Наследовать длину БПФ (Inherit FFT length from input dimensions) снят, а длина БПФ задается с помощью параметра длины БПФ. Кроме того, его нельзя выбрать, если для параметра реализации FFT задано значение FFTW.
Дополнительные сведения о порядке вывода см. в разделе Линейный и реверсированный порядок вывода.
Чтобы включить этот параметр, установите реализацию FFT в значение Auto или Radix-2.
Input is conjugate symmetric - Вход сопряжен симметричноoff (по умолчанию) | onВыберите эту опцию, если входные данные блока сопряжены с симметричными данными и требуется получить вещественные выходные данные. Установка этого флажка оптимизирует метод вычисления блока.
Блок БПФ дает сопряженный симметричный выход при вводе вещественных данных. Взятие IFFT сопряженной симметричной входной матрицы дает действительный выходной сигнал. Таким образом, если вход в блок является одновременно плавающим и сопряженным симметричным и если этот флажок установлен, блок создает вещественные выходные сигналы.
Этот флажок нельзя установить, если флажок Наследовать длину БПФ (Inherit FFT length from input dimensions) снят, а длина БПФ задается с помощью параметра длины БПФ.
Если ввести сопряженные симметричные данные в блок IFFT и не устанавливать этот флажок, блок IFFT выдаст сигнал с комплексными значениями с малыми мнимыми частями. Блок выводит недопустимые данные, если выбрана эта опция с несопряженными симметричными входными данными.
Divide output by FFT length - Делить выходной сигнал на длину БПФon (по умолчанию) | offЕсли этот флажок установлен, блок вычисляет выходные данные согласно уравнению IDFT, описанному в разделе Описание.
При снятии этого флажка блок вычисляет выходные данные с помощью измененной версии IDFT: l), которая определяется следующим уравнением:
)/Mk = 1,..., M
Модифицированное уравнение IDFT не включает коэффициент умножения 1/M.
Inherit FFT length from input dimensions - Наследование длины БПФ от входных размеровon (по умолчанию) | offВыберите для наследования длины БПФ из входных размеров. Если этот параметр не выбран, параметр длины БПФ становится доступным для задания длины. Этот параметр нельзя удалить, если выбран параметр Input (Ввод) в бит-обратном порядке или Input (Ввод) является сопряженным симметричным параметром.
FFT length - длина БПФ64 (по умолчанию) | целое числоУкажите длину БПФ как целое число, большее или равное двум.
При установке для параметра реализации FFT значения Radix-2или при установке флажка Вывод в обратном порядке (Output in bit-reversed order) это значение должно быть мощностью два.
Чтобы включить этот параметр, снимите флажок Наследовать длину БПФ из входных размеров (Inherit FFT length from input dimensions).
Wrap input data when FFT length is shorter than input length - Перенос или усечение входных данныхon (по умолчанию) | offВыберите перенос или усечение входных данных в зависимости от длины БПФ. При выборе этого параметра перенос данных по модулю происходит перед операцией БПФ, когда длина БПФ меньше входной длины. Если этот параметр снят, усечение входных данных до длины БПФ происходит перед операцией БПФ.
Чтобы включить этот параметр, снимите флажок Наследовать длину БПФ из входных размеров (Inherit FFT length from input dimensions).
Rounding mode - Метод округленияFloor (по умолчанию) | Ceiling | Convergent | Nearest | Round | Simplest | ZeroВыберите режим округления для операций с фиксированной точкой.
Значения таблицы синусов не соответствуют этому параметру; вместо этого они всегда округляются до Nearest.
Параметр Режим округления не влияет на числовые результаты при выполнении всех этих условий:
Тип выходных данных продукта: Inherit: Inherit via internal rule.
Тип данных аккумулятора: Inherit: Inherit via internal rule.
С этими настройками типа данных блок работает в режиме полной точности.
Saturate on integer overflow - Насыщение при переполнении целого числаoff (по умолчанию) | onПри выборе этого параметра блок насыщает результат операции с фиксированной точкой. При сбросе этого параметра блок переносит результат операции с фиксированной точкой. Для получения подробной информации о saturate и wrap, см. режим переполнения для операций с фиксированной точкой.
Параметр Saturate on integer overflow не влияет на числовые результаты при выполнении всех этих условий:
Тип выходных данных продукта: Inherit: Inherit via internal rule.
Тип данных аккумулятора: Inherit: Inherit via internal rule.
С этими настройками типа данных блок работает в режиме полной точности.
Sine table - Тип данных значений синусоидальной таблицыInherit: Same word length as input (по умолчанию) | fixdt(1,16)Выберите способ указания длины слова для значений таблицы синусов. Длина дроби значений таблицы синусов всегда равна длине слова минус один. Для этого параметра можно установить значение:
Правило, наследующее тип данных, например: Inherit: Same word length as input
Выражение, которое вычисляет допустимый тип данных, например: fixdt(1,16)
Нажмите кнопку Показать помощник по типам данных
, чтобы отобразить помощник по типам данных, который помогает задать параметр таблицы Синус.
Дополнительные сведения см. в разделе Определение типов данных с помощью помощника по типам данных (Simulink).
Значения таблицы синусов не подчиняются режиму Округления и Сатурату для параметров переполнения целых чисел; вместо этого они всегда насыщены и округлены до Nearest.
Product output - Тип выходных данных продуктаInherit: Inherit via internal rule (по умолчанию) | Inherit: Same as input | fixdt(1,16,0)Укажите тип выходных данных продукта. Примеры использования типа выходных данных продукта в этом блоке приведены в разделе Типы данных фиксированной точки и умножения. Для этого параметра можно установить значение:
Правило, наследующее тип данных, например: Inherit: Inherit via internal rule. Дополнительные сведения об этом правиле см. в разделе Наследование через внутреннее правило.
Выражение, которое вычисляет допустимый тип данных, например: fixdt(1,16,0)
Нажмите кнопку Show data type assistant (Показать помощник по типам данных
), чтобы отобразить помощник по типам данных, который помогает задать параметр вывода продукта.
Дополнительные сведения см. в разделе Определение типов данных с помощью помощника по типам данных (Simulink).
Accumulator - Тип данных аккумулятораInherit: Inherit via internal rule (по умолчанию) | Inherit: Same as input | Inherit: Same as product output | fixdt(1,16,0)Укажите тип данных накопителя. Примеры использования типа данных накопителя в этом блоке см. в разделе Фиксированная точка. Для этого параметра можно задать значение:
Правило, наследующее тип данных, например: Inherit: Inherit via internal rule. Дополнительные сведения об этом правиле см. в разделе Наследование через внутреннее правило.
Выражение, которое вычисляет допустимый тип данных, например: fixdt(1,16,0)
Нажмите кнопку Show data type assistant (Показать помощник по типам данных
) для отображения помощника по типам данных, который поможет установить параметр Accumulator.
Дополнительные сведения см. в разделе Определение типов данных с помощью помощника по типам данных (Simulink).
Output - Тип выходных данныхInherit: Inherit via internal rule (по умолчанию) | Inherit: Same as input | fixdt(1,16,0)Укажите тип выходных данных. Примеры использования типа выходных данных в этом блоке см. в разделе Фиксированная точка. Для этого параметра можно установить значение:
Правило, наследующее тип данных, например: Inherit: Inherit via internal rule.
При выборе Inherit: Inherit via internal ruleблок автоматически вычисляет длину выходного слова и длину дроби. Уравнения, используемые блоком для вычисления длины идеального выходного слова и длины дроби, зависят от установки флажка Разделить выходной сигнал на длину БПФ (Divide output by FFT length).
При установке флажка Разделить выходные данные на длину БПФ (Divide output by FFT length) идеальные длины выходных слов и дробей совпадают с длинами входных слов и дробей.
При снятии флажка Разделить выходные данные на длину БПФ (Divide output by FFT length) блок вычисляет идеальные длины выходных слов и дробей в соответствии со следующими уравнениями:
− 1)) + 1
FLвход
Используя эти идеальные результаты, внутреннее правило затем выбирает длины слов и дроби, которые подходят для вашего оборудования. Дополнительные сведения см. в разделе Наследование через внутреннее правило.
Выражение, которое вычисляет допустимый тип данных, например: fixdt(1,16,0)
Нажмите кнопку Show data type assistant (Показать помощник по типам данных
) для отображения помощника по типам данных, который поможет задать параметр Output (Вывод).
Для получения дополнительной информации см. раздел Типы данных управляющих сигналов (Simulink).
Output Minimum - Блок минимального значения должен выводиться[] (по умолчанию) | скалярУкажите минимальное значение, которое должен выводить блок. Значение по умолчанию: [] (не указано). Программное обеспечение Simulink использует это значение для выполнения следующих действий:
Проверка диапазона моделирования (см. раздел Определение диапазонов сигналов (Simulink))
Автоматическое масштабирование типов данных с фиксированной точкой
Output Maximum - Должен выводиться блок максимального значения[] (по умолчанию) | скалярУкажите максимальное значение, которое должен выводить блок. Значение по умолчанию: [] (не указано). Программное обеспечение Simulink использует это значение для выполнения следующих действий:
Проверка диапазона моделирования (см. раздел Определение диапазонов сигналов (Simulink))
Автоматическое масштабирование типов данных с фиксированной точкой
Lock data type settings against changes by the fixed-point tools - Предотвращение переопределения типов данных инструментами с фиксированной точкойoff (по умолчанию) | onВыберите этот параметр, чтобы инструменты с фиксированной точкой не переопределяли типы данных, заданные в диалоговом окне блока.
Реализация FFTW обеспечивает оптимизированное вычисление FFT, включая поддержку длин преобразования «мощность двух» и «мощность двух» при моделировании и генерации кода. Созданный код, использующий реализацию FFTW, будет ограничен хост-компьютерами MATLAB. Тип данных должен быть плавающей точкой. Дополнительные сведения о создании кода см. в документе Simulink Coder.
Реализация Radix-2 поддерживает обработку с обращением битов, фиксированные данные или данные с плавающей запятой, и позволяет блоку обеспечить создание портативного C-кода с использованием Simulink Coder. Размерность M входной матрицы M-by-N должна быть степенью два. Для работы с другими входными размерами используйте блок Pad для установки или усечения этих размеров до двух или, по возможности, выберите реализацию FFTW.
При выбранном Radix-2 блок реализует один или несколько из следующих алгоритмов:
Работа бабочки
Алгоритм двойного сигнала
Алгоритм половинной длины
Radix-2 алгоритм прореживания во времени (DIT)
Radix-2 алгоритм прореживания в частоте (DIF)
| Параметры настройки | Алгоритмы, используемые для вычисления IFFT |
|---|---|
| Операция реверсирования битов и DIT radix-2 |
| Radix-2 ДИТ |
| Операция реверсирования битов и ДИТ radix-2 в сочетании с алгоритмами половинной длины и двойного сигнала |
| Radix-2 DIT в сочетании с алгоритмами половинной длины и двойного сигнала |
В определенных ситуациях алгоритм Radix-2 блока вычисляет все возможные тригонометрические значения коэффициента твиддла
где K - большее значение M или N и . Блок сохраняет эти значения в таблице и извлекает их во время моделирования. Количество записей таблицы для фиксированных и плавающих точек суммировано в следующей таблице:
Количество записей таблицы для N-Point FFT | |
|---|---|
плавающая точка | 3N/4 |
фиксированная точка | N |
[1] Орфанидис, С. Дж. Введение в обработку сигналов. Река Верхнее Седло, Нью-Джерси: Прентис Холл, 1996, стр. 497.
[2] Проакис, Джон Г. и Димитрис Г. Манолакис. Цифровая обработка сигналов, 3-я редакция реки Верхнее Седло, Нью-Джерси: Прентис Холл, 1996.
[3] FFTW (http://www.fftw.org)
[4] Фриго, М. и С. Г. Джонсон, «FFTW: адаптивная архитектура программного обеспечения для FFT», Труды Международной конференции по акустике, речи и обработке сигналов, том 3, 1998, стр. 1381-1384 .
Примечания и ограничения по использованию:
При выполнении следующих условий исполняемый файл, созданный из этого блока, опирается на предварительно созданные файлы динамической библиотеки (.dll файлы), входящие в состав MATLAB:
Реализация БПФ установлена в FFTW.
Наследование длины БПФ из входных размеров очищается, и длина БПФ устанавливается в значение, которое не является степенью двух.
Используйте packNGo для упаковки кода, сгенерированного из этого блока, и всех соответствующих файлов в сжатый zip-файл. С помощью этого zip-файла можно переместить, распаковать и перестроить проект в другой среде разработки, где MATLAB не установлен. Дополнительные сведения см. в разделе Запуск созданного исполняемого файла вне MATLAB.
Если длина БПФ равна двум, можно создать автономный код C и C++ из этого блока.
На следующих диаграммах показаны типы данных, используемые в блоке IFFT для сигналов с фиксированной точкой. В диалоговом окне блока IFFT можно задать типы данных синусоидальной таблицы, накопителя, выходных данных продукта и выходных данных, как описано в разделе Параметры.
Блок IFFT сначала передает входные данные типу выходных данных, а затем сохраняет их в выходном буфере. Затем каждая ступень бабочки обрабатывает сигналы в накопительном типе данных, при этом конечный выход бабочки возвращается в выходной тип данных. Блок умножается на сдвоенный коэффициент перед каждой ступенью бабочки в IFFT прореживания во времени и после каждой ступени бабочки в IFFT прореживания в частоте.

Выходной сигнал умножителя находится в накопительном типе данных, поскольку оба входных сигнала умножителя являются комплексными. Для получения подробной информации о выполненном комплексном умножении см. Типы данных умножения.
Примечание
Когда блок вводится с фиксированной точкой, все внутренние типы данных подписываются с фиксированной точкой.
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.
