Функция fft2
Функция fft2 выполняет двумерное быстрое преобразование Фурье (БПФ) над массивом данных. Первым параметром функция принимает входной массив, вторым параметром можно указать размерность преобразования, третьим - направление преобразования. По умолчанию преобразование выполняется по обеим осям.
Синтаксис
np.fft.fft2(a, s=None, axes=(-2, -1), norm=None)
Основные параметры функции:
-
a- входной массив данных. -
s- форма выходного массива (кортеж из двух чисел). Если не указан, используется форма входного массива. -
axes- оси, по которым выполняется преобразование. -
norm- режим нормализации. Может принимать значенияNone,'ortho'.
Пример
Давайте создадим двумерный массив и применим к нему преобразование Фурье:
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
res = np.fft.fft2(arr)
print(res)
Результат выполнения кода:
[[45. +0.j -4.5+2.598j -4.5-2.598j]
[-13.5+7.794j 0. +0.j 0. +0.j ]
[-13.5-7.794j 0. +0.j 0. +0.j ]]
Пример
Выполним преобразование с указанием размера выходного массива:
import numpy as np
arr = np.array([[1, 2], [3, 4]])
res = np.fft.fft2(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 ]
[-2. +0.j 0. +0.j 2. +0.j 0. +0.j ]
[ 0. +0.j 0. +0.j 0. +0.j 0. +0.j ]]
Пример
Выполним двумерное преобразование с использованием обратного преобразования для восстановления исходных данных:
import numpy as np
rng = np.random.default_rng(0)
arr = rng.random((3, 3))
fft_res = np.fft.fft2(arr)
ifft_res = np.fft.ifft2(fft_res)
print(ifft_res)
Результат выполнения кода:
[[0.63696169+0.j 0.26978671+0.j 0.04097352+0.j]
[0.01652764+0.j 0.81327024+0.j 0.91275558+0.j]
[0.60663578+0.j 0.72949656+0.j 0.54362499+0.j]]
Пример
Изменим оси для преобразования:
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6]])
res = np.fft.fft2(arr, axes=(0, 1))
print(res)
Результат выполнения кода:
[[21. +0.j -3. +1.732j -3. -1.732j]
[-9. +0.j 0. +0.j 0. +0.j ]]