числовой::

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

Блокноты 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, или матрица той же длины и формата как первый входной параметр L, A или M, соответственно. Тип возвращаемого значения может быть изменен с опцией ReturnType.

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

Функции MuPAD

Для просмотра документации необходимо авторизоваться на сайте