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