Функция fftn
Функция fftn выполняет n-мерное быстрое преобразование Фурье
над входным массивом. Она принимает массив данных, а также
дополнительные параметры для управления осями и размерами
преобразования. Результатом является комплексный массив
той же формы, что и входной.
Синтаксис
np.fft.fftn(a, s=None, axes=None, norm=None)
Параметры
Параметр a - это входной массив, к которому применяется преобразование.
Это может быть одномерный, двумерный или многомерный массив.
Параметр s определяет размеры преобразования по каждой оси.
Если указан, то массив обрезается или дополняется нулями до
заданных размеров. По умолчанию используется форма входного массива.
Параметр axes задаёт оси, по которым выполняется преобразование.
По умолчанию преобразование применяется по всем осям массива.
Параметр norm управляет нормализацией результата.
Может принимать значения "backward" (по умолчанию),
"ortho" и "forward".
Пример
Выполним трёхмерное преобразование Фурье для массива размером 2x2x2:
import numpy as np
arr = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])
res = np.fft.fftn(arr)
print(res)
Результат выполнения кода:
[[[36.+0.j -4.+0.j]
[-8.+0.j 0.+0.j]]
[[-16.+0.j 0.+0.j]
[ 0.+0.j 0.+0.j]]]
Пример
Выполним преобразование только по указанным осям, например, по двум последним осям трёхмерного массива:
import numpy as np
arr = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])
res = np.fft.fftn(arr, axes=(-2, -1))
print(res)
Результат выполнения кода:
[[[ 10.+0.j -2.+0.j]
[-26.+0.j 0.+0.j]]
[[ 26.+0.j -2.+0.j]
[-26.+0.j 0.+0.j]]]
Пример
Используем параметр s для дополнения массива нулями
до указанных размеров перед преобразованием:
import numpy as np
arr = np.array([[1, 2], [3, 4]])
res = np.fft.fftn(arr, s=(4, 4))
print(res)
Результат выполнения кода:
[[10.+0.j 0.+0.j -2.+0.j 0.+0.j]
[ 0.+0.j 0.+0.j 0.+0.j 0.+0.j]
[-4.+0.j 0.+0.j 0.+0.j 0.+0.j]
[ 0.+0.j 0.+0.j 0.+0.j 0.+0.j]]
Пример
Применим ортогональную нормализацию для сохранения энергии при преобразовании:
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6]])
res = np.fft.fftn(arr, norm="ortho")
print(res)
Результат выполнения кода:
[[ 8.5732141 +0.j -1.5 +0.8660254j -1.5 -0.8660254j]
[-4.33012702+2.5j 0. +0.j 0. +0.j ]
[-4.33012702-2.5j 0. +0.j 0. +0.j ]]