numeric::fft

Быстрое преобразование Фурье

Блокноты 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 = pq, дискретное преобразование Фурье, может быть вычислен p различные преобразования Фурье подмножеств данных, каждое подмножество, имеющее размер данных q. Соответствие 'делит и завоевывает' алгоритм, известен как БПФ ('Быстрое преобразование Фурье'). fft стандартная программа использует Алгоритм бпф. Является самым эффективным, когда размер данных N является целочисленной степенью 2 ('основание 2 БПФ'). В этом случае для алгоритма нужны элементарные операции.

Примечание

В более общем плане БПФ эффективен, если размер данных является продуктом многих маленьких факторов.

После Блюштайна преобразование Фурье записано как свертка, если размер данных N является началом. Данные дополнены нулем к длине данных, которая является целочисленной степенью 2. Свертка затем вычисляется через основание 2 БПФ. Таким образом для алгоритма нужны элементарные операции, даже если N является началом.

Взаимодействия среды

Без опции Symbolic, функция чувствительна к переменной окружения DIGITS, который определяет числовую рабочую точность.

Примеры

Пример 1

Вычислите одномерные преобразования с помощью списков. По умолчанию числовые выражения преобразованы в значения с плавающей точкой:

L := [1, 2^(1/2), 3*I, PI]: 
F := numeric::fft(L)

Чтобы использовать точную арифметику, задайте опцию Symbolic:

F := numeric::fft(L, Symbolic)

numeric::fft принимает символьные выражения. Внутренне, метод по умолчанию HardwareFloatsDIGITS < 16) сбои из-за символьного параметра x. Следующие результаты вычисляются с арифметикой программного обеспечения, обеспеченной ядром MuPAD®:

L := [x, 2, 3, x]: 
numeric::fft(L)

numeric::fft(L, Symbolic)

delete L, F

Пример 2

Вычислите следующие многомерные преобразования. Во-первых, вычислите двумерное преобразование с помощью массива с двумя индексами:

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

Пример 3

Данные произвольной длины могут быть преобразованы:

L := [1, 2 + I, PI/3]:
numeric::fft(L)

delete L

Параметры

L

Список или одномерный массив (1 .. N, [Symbol::hellip]), или одномерный hfarray (1 .. N, [Symbol::hellip]) из арифметических выражений.

M

matrix из категории Cat::Matrix из арифметических выражений.

A

d - размерный array( 1..n_1,Symbol::hellip,1..n_d, [Symbol::hellip] ) или d - размерный hfarray( 1..n_1,Symbol::hellip,1..n_d, [Symbol::hellip] ) из арифметических выражений.

mode

Один из флагов Hard, HardwareFloats, Soft, SoftwareFloats, или Symbolic

Опции

Hard, HardwareFloats, Soft, SoftwareFloats

С Hard (или HardwareFloats), расчеты сделаны с помощью быстрого оборудования арифметика с плавающей точкой из сеанса MuPAD. Hard и HardwareFloats эквивалентны. При использовании этой опции входные данные преобразованы в оборудование значения с плавающей точкой и обработаны скомпилированным кодом С. Результат повторно преобразован в MuPAD значения с плавающей точкой и возвращен в сеанс MuPAD.

С Soft (или SoftwareFloats) расчеты сделаны с помощью программного обеспечения арифметика с плавающей точкой, обеспеченная ядром MuPAD. Soft и SoftwareFloats эквивалентны. SoftwareFloats используется по умолчанию если текущее значение DIGITS больше, чем 15 и входная матрица A не имеет доменного типа DOM_HFARRAY.

По сравнению с SoftwareFloats используемый ядром MuPAD, расчетом с HardwareFloats может быть намного быстрее. Обратите внимание, однако, что точность аппаратной арифметики ограничивается приблизительно 15 цифрами. Далее, размер чисел с плавающей запятой не может быть больше, чем приблизительно 10 308 и не меньшим, чем приблизительно 10 - 308.

Если никакой HardwareFloats или SoftwareFloats заданы, следующая стратегия используется. Если текущее значение DIGITS меньше, чем 16 или если матричный A оборудование массив с плавающей точкой доменного типа DOM_HFARRAY, затем аппаратную арифметику пробуют. Если это успешно, результат возвращен.

Если результат не может быть вычислен с оборудованием значения с плавающей точкой, арифметику программного обеспечения ядром MuPAD пробуют.

Если текущее значение DIGITS больше, чем 15 и входная матрица A не имеет доменного типа DOM_HFARRAY, или если одна из опций Soft, SoftwareFloats или Symbolic задан, MuPAD вычисляет результат со своей арифметикой программного обеспечения, не пытаясь использовать аппаратную арифметику сначала.

Может быть несколько причин аппаратной арифметики, чтобы перестать работать:

  • Текущее значение DIGITS больше, чем 15.

  • Данные содержат символьные объекты.

  • Данные содержат числа, больше, чем 10 308 или меньший, чем 10 - 308, который не может быть представлен оборудованием значения с плавающей точкой.

Если никакой HardwareFloats ни SoftwareFloats задан, функция не указывает, используется ли оборудование значения с плавающей точкой или программное обеспечение значения с плавающей точкой.

Если HardwareFloats заданы, но перестали работать из-за одной из причин выше, предупреждение выдано, что (намного более медленное) программное обеспечение арифметика с плавающей точкой ядра MuPAD используется.

Обратите внимание на то, что HardwareFloats может только использоваться, если все входные данные могут быть преобразованы в числа с плавающей запятой.

С Soft и SoftwareFloats, символьные объекты приняты, даже если они не могут быть преобразованы в числа с плавающей запятой. Результат состоит из арифметических выражений, включающих оба числа с плавающей запятой, а также символьные объекты. Смотрите Пример 1.

Запаздывающие цифры в результатах с плавающей точкой вычисляются с HardwareFloats и SoftwareFloats может отличаться.

Symbolic

Эта опция предотвращает преобразование входных данных к значениям с плавающей точкой.

Без этой опции, конвертер с плавающей точкой float применяется ко всем входным данным. Используйте эту опцию, если никакое такое преобразование не желаемо. Точная арифметика используется для расчета преобразование Фурье.

ReturnType

Опция, заданная как ReturnType = t

Возвратите результат в контейнере доменного типа t. Следующее возвращается, вводит t доступны: DOM_LIST, или DOM_ARRAY, или DOM_HFARRAY, или matrix, или densematrix.

Эта опция определяет доменный тип t из результата.

Если никакие не возвращаются, тип задан этой опцией, результат если из того же типа и формата как входные данные.

Если тип возврата DOM_LIST задан, результатом всегда является простой список чисел с плавающей запятой. Если входные данные даны матрицей или многомерным массивом, возвращенный список представляет операнды многомерных данных Фурье. Например, если 1 n ×n2 матрица вводится, возвращаемое значение является списком с n 1 значения  n2, представляющие записи 1 n ×n2 матрица. Первый n записи 2 списка представляют первую строку результата, следующий n записи 2, представляет вторую строку и так далее.

С ReturnType = matrix или ReturnType = densematrix, только результаты одного - и двумерные преобразования Фурье могут быть представлены.

Clean

Уменьшайте мусор округления в результате. Все записи результата с абсолютными значениями, меньшими, чем 10^(-DIGITS) времена максимальное абсолютное значение всех операндов результата установлены в 0.0. Далее, стандартный numeric::complexRound применяется ко всем записям результата.

Примечание

Постобработка результата сделана на программном уровне. При использовании оборудования значения с плавающей точкой эта опция может значительно увеличить время выполнения.

Эта опция проигнорирована, когда используется в сочетании с опцией Symbolic.

Возвращаемые значения

Список, массив, hfarray, или матрица той же длины и формата как первый входной параметр LA, или M, соответственно. Тип возвращаемого значения может быть изменен с опцией ReturnType.

Смотрите также

Функции MuPAD