Обратное быстрое преобразование Фурье (IFFT) входа
DSP System Toolbox/Преобразования
Блок IFFT вычисляет обратное быстрое преобразование Фурье (IFFT) через первую размерность входного массива N-D. Блок использует одну из двух возможных реализаций БПФ. Можно выбрать реализацию на основе библиотеки FFTW или реализацию на основе набора Radix-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 использует перенос по модулю M данных, чтобы сохранить все доступные входные выборки.
Чтобы избежать такого увеличения величины, можно обрезать длину входа выборки, P, до длины БПФ, M. Для этого поместите Pad блок перед блоком IFFT в свою модель.
Port_1
- Входной сигналВходной сигнал для вычисления ОБПФ. Блок вычисляет ОБПФ вдоль первой размерности входного сигнала N-D. Вход может быть с плавающей точкой или с фиксированной точкой, вещественным, или комплексным и сопряженным симметричным.
Для получения дополнительной информации о том, как блок вычисляет ОБПФ, смотрите Описание и Алгоритмы.
Типы данных: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| fixed point
Поддержка комплексного числа: Да
Port_1
- ОБПФ входаОБПФ, вычисленный по первой размерности N-D входного массива. Для получения дополнительной информации о том, как блок вычисляет ОБПФ, смотрите Описание и Алгоритмы.
Вход <reservedrangesplaceholder7> th <reservedrangesplaceholder6> th произвел канал, y (k, L), равно точке <reservedrangesplaceholder2> th M - указывают обратное дискретное преобразование Фурье (IDFT) канала входа <reservedrangesplaceholder0> 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
mode, см. Radix-2 Implementation.
Установите этот параметр равным Auto
чтобы позволить блоку выбрать реализацию БПФ. Для входов с плавающей точкой с длинами преобразования, отличными от мощности двух, автоматически выбирается алгоритм FFTW. В противном случае автоматически выбирается алгоритм Radix-2. Для степени двойки длин преобразования, блок ограничивает сгенерированный код хостов-компьютеров MATLAB.
Input is in bit-reversed order
- Вход в обратном битовом порядкеoff
(по умолчанию) | on
Установите или снимите этот флажок, чтобы обозначить порядок входа элементов канала. Установите этот флажок, когда вход находится в обратном битовом порядке, и снимите его, когда вход находится в линейном порядке. Блок приводит к недопустимым выходам, когда вы не задаете этот параметр правильно.
Вы не можете установить этот флажок, если вы сняли флажок Inherit FFT length from input dimensions и задаете длину БПФ используя параметр FFT length. Кроме того, он не может быть выбран, когда вы устанавливаете параметр FFT implementation равным FFTW
.
Для получения дополнительной информации о упорядоченном расположении выхода, смотрите Линейный и Bit-Reversed Выходной порядок.
Чтобы включить этот параметр, установите 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
- Разделите вывод на длину БПФ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
Выберите для переноса или усечения входов зависимости от длины БПФ. Если вы выбираете этот параметр, перенос данных по модулю происходит перед операцией БПФ, когда длина БПФ короче, чем длина входа. Если удалить этот параметр, усечение входных данных до длины БПФ происходит перед операцией БПФ.
Чтобы включить этот параметр, снимите флажок 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).
Значения синусоидальной таблицы не подчиняются параметрам Rounding mode и Saturate on integer overflow; вместо этого они всегда насыщены и округлены до 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)
Задайте тип данных аккумулятора. Смотрите Fixed Point для рисунков, изображающих использование типа данных аккумулятора в этом блоке. Можно задать этот параметр как:
Правило, которое наследует тип данных, например Inherit: Inherit via internal rule
. Дополнительные сведения об этом правиле см. в разделе Наследование через внутреннее правило.
Выражение, которое вычисляет допустимый тип данных, например fixdt(1,16,0)
Нажмите кнопку Show data type assistant, чтобы отобразить 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, блок вычисляет идеальное выходное слово и длины дроби согласно следующим уравнениям:
Используя эти идеальные результаты, внутреннее правило затем выбирает размеры слова и длины дробей, которые подходят для вашего оборудования. Для получения дополнительной информации см. раздел Наследование через внутреннее правило.
Выражение, которое вычисляет допустимый тип данных, например 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
- Предотвратить переопределение типов данных инструментами с фиксированной точкойoff
(по умолчанию) | on
Выберите этот параметр, чтобы предотвратить переопределение инструментами с фиксированной точкой типов данных, заданных в диалоговом окне блока.
Реализация FFTW обеспечивает оптимизированное вычисление БПФ, включая поддержку длин преобразования «степень двойки» и «степень двойки» как в симуляции, так и в генерации кода. Сгенерированный код с использованием реализации FFTW будет ограничен хостами-компьютерами MATLAB. Тип данных должен быть с плавающей точкой. Для получения дополнительной информации о генерации кода см. Simulink Coder.
Реализация Radix-2 поддержек обработку с обращением битов, данные с фиксированной или плавающей точкой и позволяет блоку предоставлять портативную Генерацию кода C, используя Simulink Coder. Размерная M входной матрицы M -by N должна быть степенью двойки. Чтобы работать с другими размерами входных параметров, используйте блок Pad, чтобы дополнить или обрезать эти размерности до степеней двойки, или, по возможности, выберите реализацию FFTW.
Когда Radix-2 выбран, блок реализует один или несколько следующих алгоритмов:
Операция с бабочкой
Сигнал double
Алгоритм половинной длины
Radix-2 алгоритм децимирования во времени (DIT)
Radix-2 алгоритм децимирования в частоте (DIF)
Настройки параметров | Алгоритмы, используемые для расчетов ОБПФ |
---|---|
| Операция реверсирования битов и DIT radix-2 |
| Radix-2 DIT |
| Операция реверсирования битов и DIT radix-2 в сочетании с алгоритмами половинной длины и сигнала double |
| Radix-2 DIT в сочетании с алгоритмами половинной длины и сигнала double |
В определенных ситуациях алгоритм Radix-2 блока вычисляет все возможные тригонометрические значения коэффициента twiddle
где K - большее значение M или N и . Блок хранит эти значения в таблице и извлекает их во время симуляции. Количество записей в таблице для с фиксированной и с плавающей точками суммировано в следующей таблице:
Количество записей в таблице для N значений | |
---|---|
с плавающей точкой | 3 <reservedrangesplaceholder0>/4 |
фиксированная точка | N |
[1] Orfanidis, S. J. Введение в обработку сигналов. Верхний Седл-Ривер, Нью-Джерси: Prentice Hall, 1996, с. 497.
[2] Проакис, Джон Г. и Димитрис Г. Манолакис. Digital Signal Processing, 3rd ed. Upper Saddle River, NJ: Prentice Hall, 1996.
[3] FFTW (http://www.fftw.org
)
[4] Frigo, M. and S. G. Johnson, «FFTW: An Adaptive Программная Архитектура for БПФ», Труды Международной конференции по акустике, речи и обработке сигналов, Vol. 3, 1998, pp. 1381-1384 .
Указания и ограничения по применению:
Когда применяются следующие условия, исполняемый файл, сгенерированный из этого блока, полагается на предварительно построенные файлы динамической библиотеки (.dll
файлы) в комплекте с MATLAB:
FFT implementation установлено на FFTW
.
Inherit FFT length from input dimensions очищено, и FFT length установлено значение, которое не является степенью двойки.
Используйте packNGo
функция, чтобы упаковать код, сгенерированный из этого блока, и все соответствующие файлы в сжатом zip-файле. Используя эту zip- файла, можно переместить, распаковать и перестроить проект в другой среде разработки, где MATLAB не установлен. Для получения дополнительной информации см. раздел «Как запустить сгенерированный исполняемый файл вне MATLAB».
Когда длина БПФ является степенью двойки, можно сгенерировать автономные C и Код С++ из этого блока.
Следующие схемы показывают типы данных, используемые в блоке IFFT для сигналов с фиксированной точкой. Можно задать синусоидальную таблицу, аккумулятор, выходные данные продукта и типы выходных данных, отображенные в схемах в диалоговом окне IFFT блока, как обсуждается в параметры.
Блок IFFT сначала вводит входные параметры в тип данных выходов, а затем сохраняет его в буфере выхода. Затем каждый каскад бабочки обрабатывает сигналы в типе данных аккумулятора, причем конечный выход бабочки переводится назад в тип выходных данных. Блок умножается в коэффициенте twiddle перед каждым каскадом butterfly в ОБПФ децимации во времени и после каждого каскада butterfly в ОБПФ децимации в частоте.
Выход умножителя находится в типе данных аккумулятора, потому что оба входов в умножитель являются комплексными. Для получения дополнительной информации о выполненном комплексном умножении смотрите Типы данных умножения.
Примечание
Когда вход блока является фиксированной точкой, все внутренние типы данных являются подписанными фиксированной точкой.
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.