Быстрое преобразование Фурье (БПФ) входного сигнала
Панель инструментов/преобразования системы DSP
Блок БПФ вычисляет быстрое преобразование Фурье (БПФ) по первому измерению N-D входной матрицы, u. Блок использует одну из двух возможных реализаций БПФ. Можно выбрать реализацию на основе библиотеки FFTW или реализацию на основе набора алгоритмов Radix-2. Чтобы позволить блоку выбрать реализацию, можно выбрать Auto. Дополнительные сведения о реализациях FFT см. в разделе Алгоритмы.
Для указанных пользователем длин БПФ, не равных P, перед операцией БПФ происходит сворачивание данных с заполнением нуля или усечением, или по модулю. Для БПФ с P ≤ M:
y = fft(u,M) % P ≤ MОбертка:
y(:,L) = fft(datawrap(u(:,L),M)) % P > M; L = 1,...,NУсечение:
y (:,L) = fft(u,M) % P > M; L = 1,...,NСовет
Когда входная длина P больше длины БПФ, M, вы можете видеть увеличение величины выхода БПФ. Эти величины увеличиваются, поскольку блок БПФ использует обертку данных по модулю М для сохранения всех доступных входных выборок.
Чтобы избежать такого увеличения величины, можно усечь длину входного образца P до длины БПФ, М. Для этого поместите блок Pad перед блоком БПФ в модели.
Port_1 - Входной сигналВходной сигнал для вычисления БПФ. Блок вычисляет БПФ по первому размеру N-D входного сигнала.
Дополнительные сведения о том, как блок вычисляет БПФ, см. в разделе Описание и алгоритмы.
Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | fixed point
Поддержка комплексного номера: Да
Port_1 - БПФ входаБПФ, вычисленный по первому измерению N-D входной матрицы. Когда вывод блока имеет целочисленный тип данных или тип данных с фиксированной точкой, он всегда подписывается.
K-й вход Lth выходного канала, y (k, L), равен k-й точке М-точечного дискретного преобразования Фурье (DFT) Lth входного канала:
k = 1,..., M
Дополнительные сведения о том, как блок вычисляет БПФ, см. в разделе Описание и алгоритмы.
Типы данных: 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.
Output in bit-reversed order - Вывод в бит-реверсированном порядкеoff (по умолчанию) | onОбозначьте порядок элементов выходного канала относительно порядка входных элементов. Если этот флажок установлен, элементы выходного канала отображаются в битовом обратном порядке относительно порядка ввода. Если этот флажок снят, элементы выходного канала отображаются в линейном порядке относительно порядка ввода.
Примечание
Блок БПФ вычисляет свой выходной сигнал в обратном порядке. Линейное упорядочение выходного сигнала блока БПФ требует дополнительной операции реверсирования битов. Во многих случаях можно увеличить скорость блока БПФ, установив флажок Output in bit-reversed order.
Для получения дополнительной информации о порядке вывода см. Линейный и реверсированный порядок вывода.
Чтобы включить этот параметр, установите реализацию FFT в значение Auto или Radix-2.
Divide output by FFT length - Делить выходной сигнал на длину БПФoff (по умолчанию) | onПри выборе этого параметра блок делит выходной сигнал БПФ на длину БПФ. Эта опция полезна, если выход БПФ должен оставаться в том же диапазоне амплитуд, что и его вход. Это особенно полезно при работе с типами данных с фиксированной точкой.
Inherit FFT length from input dimensions - Наследование длины БПФ от входных размеровon (по умолчанию) | offВыберите для наследования длины БПФ из входных размеров. Если этот флажок установлен, длина ввода должна быть равна двум.
Если этот флажок не установлен, параметр длины БПФ становится доступным для задания длины.
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. Тип входных данных должен быть плавающей запятой.
Реализация Radix-2 поддерживает обработку с обращением битов, фиксированные данные или данные с плавающей запятой, и позволяет блоку обеспечить создание портативного C-кода с использованием Simulink Coder. Размерность M входной матрицы M-by-N должна быть степенью два. Для работы с другими входными размерами используйте блок Pad для установки или усечения этих размеров до двух или, по возможности, выберите реализацию FFTW.
При выбранном Radix-2 блок реализует один или несколько из следующих алгоритмов:
Работа бабочки
Алгоритм двойного сигнала
Алгоритм половинной длины
Radix-2 алгоритм прореживания во времени (DIT)
Radix-2 алгоритм прореживания в частоте (DIF)
| Сложность ввода | Порядок вывода | Алгоритмы, используемые для вычисления БПФ |
|---|---|---|
Комплекс | Линейный | Работа с реверсированием битов и радиус-2 DIT |
Комплекс | Бит-реверс | Radix-2 DIF |
Реальный | Линейный | Работа с реверсированием битов и ДИТ radix-2 в сочетании с алгоритмами половинной длины и двойного сигнала |
Реальный | Бит-реверс | Radix-2 DIF в сочетании с алгоритмами половинной длины и двойного сигнала |
Эффективность алгоритма БПФ может быть повышена для реальных входных сигналов путем формирования комплексных последовательностей из действительных последовательностей перед вычислением ДПФ. При наличии 2N + 1 реальных входных каналов блок БПФ формирует эти комплексные последовательности, применяя алгоритм двойного сигнала к первым 2N входным каналам, а алгоритм половинной длины - к последнему нечетному каналу.
Для реальных входных сигналов с фиксированными типами данных на выходе последнего нечетного канала могут появляться различные числовые результаты, даже если все входные каналы идентичны. Эта численная разность является результатом различий в алгоритме двойного сигнала и алгоритме половинной длины.
Это числовое различие можно устранить двумя способами:
Использование арифметики полной точности для входных сигналов с фиксированной точкой
Изменение типа входных данных на плавающую точку
Для получения дополнительной информации об алгоритме двойного сигнала см. [2], «Эффективное вычисление DFT двух реальных последовательностей» на стр. 475. Для получения дополнительной информации об алгоритме половинной длины см. [2], «Эффективное вычисление DFT 2N-Point реальной последовательности» на стр. 476.
В определенных ситуациях алгоритм 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++ из этого блока.
На следующих диаграммах показаны типы данных, используемые в блоке БПФ для сигналов с фиксированной точкой. Можно задать типы данных Синус (Sine), Аккумулятор (Accumulator), Выход изделия (Product output) и Вывод (Output), отображаемые на диаграммах в диалоговом окне БПФ (FFT), как описано в разделе Параметры (Parameters).
Входы в блок БПФ сначала приводятся к типу выходных данных и сохраняются в выходном буфере. Затем каждая ступень бабочки обрабатывает сигналы в накопительном типе данных, при этом конечный выход бабочки возвращается в выходной тип данных. Блок умножается на сдвоенный коэффициент перед каждой ступенью бабочки в БПФ прореживания во времени и после каждой ступени бабочки в БПФ прореживания в частоте.

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