числовой::
Быстрое преобразование Фурье
Блокноты MuPAD® будут демонтированы в будущем релизе. Используйте live скрипты MATLAB® вместо этого.
Live скрипты MATLAB поддерживают большую часть функциональности MuPAD, хотя существуют некоторые различия. Для получения дополнительной информации смотрите, Преобразовывают Notebook MuPAD в Live скрипты MATLAB.
numeric::fft(L
, <mode
>, <ReturnType = t
>, <Clean
>) numeric::fft(M
, <mode
>, <ReturnType = t
>, <Clean
>) numeric::fft(A
, <mode
>, <ReturnType = t
>, <Clean
>)
numeric::fft(data)
возвращает дискретное преобразование Фурье data
.
Одномерное дискретное преобразование Фурье F = fft (L) элементов данных N L j, сохраненный в списке L = [L 1, …, L N], является списком F = [F 1, …, F N] данный
.
fft
преобразовывает данные алгоритмом Быстрого преобразования Фурье (FFT).
d - размерное дискретное преобразование Фурье F = fft (A) N = n 1×···×nd элементы данных (A j 1, …, j d) сохраненный в массиве A является массивом F = (F k 1, …, k d) данный
с k 1 = 1, …, n 1, …, k d = 1, …, n d.
Данные, обеспеченные списком, или одномерным array
или hfarray
, преобразовываются согласно одномерному преобразованию. Данные, обеспеченные матрицами, преобразовываются согласно размерному TWP преобразованию. Данные, обеспеченные многомерными массивами или hfarrays, преобразовываются согласно многомерному, преобразовывают соответствие с форматом входного массива.
Если размер данных, который N разлагает на множители как N = p q, дискретное преобразование Фурье, может быть вычислен p различные преобразования Фурье подмножеств данных, каждое подмножество, имеющее размер данных q. Соответствие 'делит и завоевывает' алгоритм, известен как БПФ ('Быстрое преобразование Фурье'). Стандартная программа fft
использует Алгоритм бпф. Является самым эффективным, когда размер данных N является целочисленной степенью 2 ('основание 2 БПФ'). В этом случае для алгоритма нужны элементарные операции.
В более общем плане БПФ эффективен, если размер данных является продуктом многих маленьких факторов.
После Блюштайна преобразование Фурье записано как свертка, если размер данных N является началом. Данные дополнены нулем к длине данных, которая является целочисленной степенью 2. Свертка затем вычисляется через основание 2 БПФ. Таким образом для алгоритма нужны элементарные операции, даже если N является началом.
Без опции Symbolic
функция чувствительна к переменной окружения DIGITS
, который определяет числовую рабочую точность.
Вычислите одномерные преобразования с помощью списков. По умолчанию числовые выражения преобразованы в значения с плавающей точкой:
L := [1, 2^(1/2), 3*I, PI]: F := numeric::fft(L)
Чтобы использовать точную арифметику, задайте опцию Symbolic
:
F := numeric::fft(L, Symbolic)
numeric::fft
принимает символьные выражения. Внутренне, метод по умолчанию HardwareFloats
(с DIGITS < 16
) приводит к сбою из-за символьного параметра x
. Следующие результаты вычисляются с арифметикой программного обеспечения, обеспеченной ядром MuPAD®:
L := [x, 2, 3, x]: numeric::fft(L)
numeric::fft(L, Symbolic)
delete L, F
Вычислите следующие многомерные преобразования. Во-первых, вычислите двумерное преобразование с помощью массива с двумя индексами:
A := array(1..2, 1..4, [[1, 2, 3, 4], [a, b, c, d]]): numeric::fft(A, Symbolic)
Затем, вычислите преобразование для 3D массива:
A := array(1..2, 1..4, 1..2, [[[sin(j1*PI/2)*cos(j2*3*PI/4)*sin(j3*PI/2) $ j3 = 1..2 ] $ j2 = 1..4 ] $ j1 = 1..2]): numeric::fft(A)
array(1..2, 1..4, 1..2, (1, 1, 1) = -1.0 (1, 1, 2) = -1.0 (1, 2, 1) = - 1.414213562 - 1.0 I (1, 2, 2) = - 1.414213562 - 1.0 I (1, 3, 1) = 1.0 (1, 3, 2) = 1.0 (1, 4, 1) = - 1.414213562 + 1.0 I (1, 4, 2) = - 1.414213562 + 1.0 I (2, 1, 1) = -1.0 (2, 1, 2) = -1.0 (2, 2, 1) = - 1.414213562 - 1.0 I (2, 2, 2) = - 1.414213562 - 1.0 I (2, 3, 1) = 1.0 (2, 3, 2) = 1.0 (2, 4, 1) = - 1.414213562 + 1.0 I (2, 4, 2) = - 1.414213562 + 1.0 I )
delete A
Данные произвольной длины могут быть преобразованы:
L := [1, 2 + I, PI/3]: numeric::fft(L)
delete L
|
Список, или одномерный массив ( |
|
|
|
d - размерный |
|
Один из флагов |
|
С С По сравнению с Если никакой Если результат не может быть вычислен с оборудованием значения с плавающей точкой, арифметику программного обеспечения ядром MuPAD пробуют. Если текущее значение Может быть несколько причин аппаратной арифметики, чтобы перестать работать:
Если ни Если Обратите внимание на то, что С Запаздывающие цифры в результатах с плавающей точкой, вычисленных с |
|
Эта опция предотвращает преобразование входных данных к значениям с плавающей точкой. Без этой опции конвертер с плавающей точкой |
|
Опция, заданная как Возвратите результат в контейнере доменного типа Эта опция определяет доменный тип Если никакие не возвращаются, тип задан этой опцией, результат если из того же типа и формата как входные данные. Если тип возврата С |
|
Уменьшайте мусор округления в результате. Все записи результата с абсолютными значениями, меньшими, чем времена ПримечаниеПостобработка результата сделана на программном уровне. При использовании оборудования значения с плавающей точкой эта опция может значительно увеличить время выполнения. Эта опция проигнорирована, когда используется в сочетании с опцией |
Список, массив, hfarray, или матрица той же длины и формата как первый входной параметр L
, A
или M
, соответственно. Тип возвращаемого значения может быть изменен с опцией ReturnType
.