Обратное быстрое преобразование Фурье (IFFT) входа
DSP System Toolbox / Преобразовывает
Блок IFFT вычисляет обратное быстрое преобразование Фурье (IFFT) через первую размерность N-D входной массив. Блок использует одну из двух возможных реализаций БПФ. Можно выбрать реализацию на основе библиотеки FFTW или реализацию на основе набора Основания 2 алгоритма. Чтобы позволить блоку выбирать реализацию, можно выбрать Auto
. Для получения дополнительной информации о реализациях БПФ, см. Алгоритмы.
Когда вы задаете длину БПФ, не равную длине входного вектора (или первая размерность входного массива), блок реализует дополнение нуля, усечение, или по-модулю-M (длина БПФ) перенос данных. Это происходит перед операцией 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 использует данные по-модулю-M, переносящиеся, чтобы сохранить все доступные входные выборки.
Чтобы избежать таких увеличений значения, можно обрезать продолжительность входной выборки, P, к длине БПФ, M. Для этого поместите блок Pad перед блоком IFFT в вашей модели.
Port_1
— Входной сигналВходной сигнал для вычисления ОБПФ. Блок вычисляет ОБПФ по первому измерению N-D входной сигнал. Вход может быть или фиксированной точкой с плавающей точкой, действительной, или комплексной, и сопряженной симметричный.
Для получения дополнительной информации о том, как блок вычисляет ОБПФ, см. Описание и Алгоритмы.
Типы данных: single
| double
| int8
| int16
| int32
| uint8
| uint16
| uint32
| fixed point
Поддержка комплексного числа: Да
Port_1
— ОБПФ входаОБПФ, вычисленный через первую размерность входного массива N-D. Для получения дополнительной информации о том, как блок вычисляет ОБПФ, см. Описание и Алгоритмы.
k th запись L th выходной канал, y (k, L), равно k th точка M - указывает обратное дискретное преобразование Фурье (IDFT) L th входной канал:
Вывод имеет те же размерности как вход. Если входной сигнал имеет тип данных с плавающей точкой, тип данных выходного сигнала использует тот же тип данных с плавающей точкой. В противном случае вывод может быть любым типом данных с фиксированной точкой со знаком. Блок вычисляет масштабируемые и немасштабированные версии ОБПФ.
Типы данных: single
| double
| int8
| int16
| int32
| fixed point
FFT implementation
— Реализация БПФAuto
(значение по умолчанию) | Radix-2
| FFTW
Установите этот параметр на FFTW
, чтобы поддержать входной сигнал произвольной длины. Блок ограничивает сгенерированный код с реализацией FFTW к хостам - компьютерам MATLAB®.
Установите этот параметр на Radix-2
для инвертированной битом обработки, зафиксированных или данных с плавающей точкой или портативной генерации кода C с помощью Simulink® Coder™. Размерность M M-by-N входная матрица, должна быть степень двойки. Чтобы работать с другими входными размерами, используйте блок Pad, чтобы заполнить или обрезать эти размерности до степеней двойки, или, если возможно выбрать реализацию FFTW. Для получения дополнительной информации об алгоритмах, используемых режимом Radix-2
, смотрите Основание 2 Реализации.
Установите этот параметр на Auto
, чтобы позволить блоку выбрать реализацию БПФ. Для входных параметров с плавающей точкой с не степень двойки преобразовывает длины, алгоритм FFTW автоматически выбран. В противном случае Основание 2 алгоритма автоматически выбрано. Для не степень двойки преобразовывает длины, блок ограничивает сгенерированный код хостами - компьютерами MATLAB.
Input is in bit-reversed order
— Вход находится в инвертированном битом порядкеoff
(значение по умолчанию) | on
Выберите или снимите этот флажок, чтобы определять порядок входных элементов канала. Установите этот флажок, когда вход находится в инвертированном битом порядке, и очистите его, когда вход находится в линейном порядке. Блок приводит к недопустимым выходным параметрам, когда вы не устанавливаете этот параметр правильно.
Вы не можете установить этот флажок, если вы сняли флажок Inherit FFT length from input dimensions, и вы задаете длину БПФ с помощью параметра FFT length. Кроме того, это не может быть выбрано, когда вы устанавливаете параметр FFT implementation на FFTW
.
Для получения дополнительной информации об упорядоченном расположении вывода смотрите Линейный и Инвертированный Битом Выходной Порядок.
Чтобы включить этот параметр, установите FFT implementation на Auto
или Radix-2
.
Input is conjugate symmetric
— Вход сопряжен симметричныйoff
(значение по умолчанию) | on
Выберите эту опцию, когда входные параметры блока спрягают симметричные данные, и вы хотите выходные параметры с действительным знаком. Установка этого флажка оптимизирует метод вычисления блока.
Урожаи блока FFT спрягают симметричный вывод, когда вы вводите данные с действительным знаком. Взятие ОБПФ сопряженной симметричной входной матрицы производит вывод с действительным знаком. Поэтому, если вход к блоку является и плавающей точкой и сопряженный симметричный, и вы устанавливаете этот флажок, блок производит выходные параметры с действительным знаком.
Вы не можете установить этот флажок, если вы сняли флажок Inherit FFT length from input dimensions, и вы задаете длину БПФ с помощью параметра FFT length.
Если вы вводите сопряженные симметричные данные к блоку IFFT и не устанавливаете этот флажок, блок IFFT выводит сигнал с комплексным знаком с небольшими мнимыми частями. Блок выходные параметры недопустимые данные, если вы выбираете эту опцию с не, спрягает симметричные входные данные.
Divide output by FFT length
— Divide вывод длиной БПФon
(значение по умолчанию) | off
Когда вы устанавливаете этот флажок, блок вычисляет свой вывод согласно уравнению IDFT, обсужденному в разделе Description.
Когда вы снимаете этот флажок, блок вычисляет вывод с помощью измененной версии IDFT: , который задан следующим уравнением:
Измененное уравнение IDFT не включает коэффициент умножения 1/M.
Inherit FFT length from input dimensions
— Наследуйте длину БПФ от входных размерностейon
(значение по умолчанию) | off
Выберите, чтобы наследовать длину БПФ от входных размерностей. Если вы не выбираете этот параметр, параметр FFT length становится доступным, чтобы задать длину. Вы не можете очистить этот параметр, когда вы выбираете Input is in bit-reversed order или параметр Input is conjugate symmetric.
FFT length
— Длина БПФ64
(значение по умолчанию) | целое числоЗадайте длину БПФ как целое число, больше, чем или равный два.
Когда вы устанавливаете параметр 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
— Перенесите или обрежьте входon
(значение по умолчанию) | off
Примите решение перенести или обрезать вход, в зависимости от длины БПФ. Если вы выбираете этот параметр, перенос данных длины по модулю происходит перед операцией FFT, когда длина БПФ короче, чем входная длина. Если вы очищаете этот параметр, усечение входных данных к длине БПФ происходит перед операцией FFT.
Чтобы включить этот параметр, снимите флажок Inherit FFT length from input dimensions.
Rounding mode
— Округление методаFloor
(значение по умолчанию) | Ceiling
| Convergent
| Nearest
| Round
| Simplest
| Zero
Выберите округляющийся режим для операций фиксированной точки.
Табличные значения синуса не повинуются этому параметру; вместо этого, они всегда вокруг к Nearest
.
Параметр Rounding mode не имеет никакого эффекта на числовые результаты, когда все эти условия соблюдают:
Типом данных Product output является Inherit: Inherit via internal rule
.
Типом данных Accumulator является Inherit: Inherit via internal rule
.
С этими настройками типа данных блок действует в режиме максимальной точности.
Saturate on integer overflow
— Насыщайте на целочисленном переполненииoff
(значение по умолчанию) | on
Когда вы выбираете этот параметр, блок насыщает результат своей операции фиксированной точки. Когда вы очищаете этот параметр, блок переносит результат своей операции фиксированной точки. Для получения дополнительной информации на saturate
и wrap
, смотрите режим переполнения для операций фиксированной точки.
Параметр Saturate on integer overflow не имеет никакого эффекта на числовые результаты, когда все эти условия соблюдают:
Типом данных Product output является Inherit: Inherit via internal rule
.
Типом данных Accumulator является 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)
Нажмите кнопку Show data type assistant, чтобы отобразить Data Type Assistant, который помогает вам установить параметр Sine table.
Смотрите Задают Типы данных Используя Ассистент Типа данных (Simulink) для получения дополнительной информации.
Табличные значения синуса не повинуются параметры Saturate on integer overflow и Rounding mode; вместо этого, они всегда насыщаются и округляются к 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, чтобы отобразить Data Type Assistant, который помогает вам установить параметр Product output.
Смотрите Задают Типы данных Используя Ассистент Типа данных (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, чтобы отобразить Data Type Assistant, который помогает вам установить параметр Accumulator.
Смотрите Задают Типы данных Используя Ассистент Типа данных (Simulink) для получения дополнительной информации.
Вывод
Тип выходных данных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, блок вычисляет идеальное выходное слово и дробные длины согласно следующим уравнениям:
Используя эти идеальные результаты, внутреннее правило затем выбирает размеры слова и дробные длины, которые подходят для вашего оборудования. Для получения дополнительной информации смотрите, Наследовались через Внутреннее Правило.
Выражение, которое оценивает к допустимому типу данных, например, fixdt(1,16,0)
Нажмите кнопку Show data type assistant, чтобы отобразить Data Type Assistant, который помогает вам установить параметр Output.
Смотрите Типы данных Управляющего сигнала (Simulink) для получения дополнительной информации.
Output Minimum
— Блок минимального значения должен вывести[]
(значение по умолчанию) | скалярЗадайте минимальное значение, которое должен вывести блок. Значением по умолчанию является (незаданный) []
. Программное обеспечение Simulink использует это значение, чтобы выполнить:
Проверка диапазона симуляции (см. Диапазоны сигнала (Simulink)),
Автоматическое масштабирование типов данных с фиксированной точкой
Output Maximum
— Блок максимального значения должен вывести[]
(значение по умолчанию) | скалярЗадайте максимальное значение, которое должен вывести блок. Значением по умолчанию является (незаданный) []
. Программное обеспечение Simulink использует это значение, чтобы выполнить:
Проверка диапазона симуляции (см. Диапазоны сигнала (Simulink)),
Автоматическое масштабирование типов данных с фиксированной точкой
Lock data type settings against changes by the fixed-point tools
— Препятствуйте тому, чтобы Fixed-Point Tool заменили типы данныхoff
(значение по умолчанию) | on
Выберите этот параметр, чтобы препятствовать тому, чтобы Fixed-Point Tool заменили типы данных, которые вы задаете на диалоговом окне блока.
Реализация FFTW оказывает оптимизированное вычисление БПФ включая поддержку для степени двойки, и не степень двойки преобразовывают длины и в симуляцию и в генерацию кода. Сгенерированный код с помощью реализации FFTW будет ограничен хостами - компьютерами MATLAB. Тип данных должен быть с плавающей точкой. Обратитесь к Simulink Coder для получения дополнительной информации о генерации кода.
Основание 2 поддержки внедрения, инвертированная битом, обрабатывая, зафиксированные или данные с плавающей точкой, и, позволяет блоку обеспечивать портативную генерацию кода C с помощью Simulink Coder. Размерность M M-by-N входная матрица должна быть степенью двойки. Чтобы работать с другими входными размерами, используйте блок Pad, чтобы заполнить или обрезать эти размерности до степеней двойки, или, если возможно выбрать реализацию FFTW.
С Основанием 2 выбранных блок реализует один или несколько следующих алгоритмов:
Операция Butterfly
Алгоритм двойной сигнала
Поясной алгоритм
Основание 2 алгоритма десятикратного уменьшения вовремя (DIT)
Основание 2 алгоритма десятикратного уменьшения в частоте (DIF)
Установки параметров | Алгоритмы, используемые для вычисления ОБПФ |
---|---|
| Операция битного реверсирования и основание 2 DIT |
| Основание 2 DIT |
| Операция битного реверсирования и основание 2 DIT в сочетании с поясными и алгоритмами двойными сигнала |
| Основание 2 DIT в сочетании с поясными и алгоритмами двойными сигнала |
В определенных ситуациях Основание блока 2 алгоритма вычисляют все возможные тригонометрические значения вертеть фактора
где K является большим значением или M или N и . Блок хранит эти значения в таблице и получает их во время симуляции. Количество записей таблицы для фиксированной точки и с плавающей точкой получено в итоге в следующей таблице:
Количество записей таблицы для БПФ n значений | |
---|---|
с плавающей точкой | 3N/4 |
фиксированная точка | N |
[1] Orfanidis, С. Дж. Интродукшн к Обработке сигналов. Верхний Сэддл-Ривер, NJ: Prentice Hall, 1996, p. 497.
[2] Proakis, Джон Г. и Димитрис Г. Манолакис. Цифровая обработка сигналов, 3-й редактор Верхний Сэддл-Ривер, NJ: Prentice Hall, 1996.
[3] FFTW (http://www.fftw.org
)
[4] Frigo, M. и С. Г. Джонсон, “FFTW: Адаптивная Программная архитектура для БПФ”, Продолжения Международной конференции по вопросам Акустики, Речи, и Обработки сигналов, Издания 3, 1998, стр 1381-1384.
Указания и ограничения по применению:
Когда следующие условия применяются, исполняемый файл, сгенерированный от этого блока, полагается на предварительно созданные динамические файлы библиотеки (файлы .dll
) включенный с MATLAB:
FFT implementation установлен в FFTW
.
Inherit FFT length from input dimensions очищен, и FFT length установлен в значение, которое не является степенью двойки.
Используйте функцию packNGo
, чтобы группировать код, сгенерированный от этого блока и всех соответствующих файлов в сжатом zip-файле. Используя этот zip-файл, можно переместить, распаковать и восстановить проект в другой среде разработки, где MATLAB не установлен. Для получения дополнительной информации смотрите, Как Запустить Сгенерированный Исполняемый файл Вне MATLAB.
Когда длина БПФ является степенью двойки, можно сгенерировать автономный C и Код С++ от этого блока.
Следующие схемы показывают типы данных, используемые в блоке IFFT для сигналов фиксированной точки. Можно накрыть на стол синуса, аккумулятор, продукт вывод и типы выходных данных, отображенные в схемах в диалоговом окне блока IFFT, как обсуждено в Параметрах.
Блок IFFT сначала бросает вход к типу выходных данных и затем хранит его в буфере вывода. Каждый этап бабочки затем процессы сигнализирует в типе данных аккумулятора с окончательным результатом бабочки, бросаемой в тип выходных данных. Блок умножается в вертеть факторе перед каждым этапом бабочки в ОБПФ десятикратного уменьшения вовремя, и после каждого этапа бабочки в ОБПФ десятикратного уменьшения в частоте.
Вывод множителя находится в типе данных аккумулятора, потому что оба из входных параметров ко множителю являются комплексными. Для получения дополнительной информации на комплексном выполняемом умножении, смотрите Типы данных Умножения.
Когда вход блока является фиксированной точкой, все внутренние типы данных являются подписанной фиксированной точкой.
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.