Функция ifftn
Функция ifftn выполняет многомерное обратное дискретное преобразование Фурье
над многомерным массивом. Первым параметром она принимает массив комплексных
чисел в частотной области. Вторым параметром можно задать размерность
преобразования, третьим - оси, по которым выполняется преобразование,
а четвертым - параметр масштабирования.
Синтаксис
np.fft.ifftn(a, s=None, axes=None, norm=None)
Параметры функции ifftn:
-
a- входной массив комплексных чисел в частотной области -
s- форма выходного массива (кортеж из целых чисел) -
axes- оси, по которым выполняется преобразование (кортеж из целых чисел) -
norm- режим нормализации ("backward", "ortho", "forward")
Пример
Давайте выполним прямое и обратное преобразование над двумерным массивом:
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
freq = np.fft.fftn(arr)
res = np.fft.ifftn(freq)
print(res)
Результат выполнения кода:
[[1.+0.j 2.+0.j 3.+0.j]
[4.+0.j 5.+0.j 6.+0.j]
[7.+0.j 8.+0.j 9.+0.j]]
Пример
Выполним обратное преобразование только по указанным осям:
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
freq = np.fft.fftn(arr, axes=(0, 1))
res = np.fft.ifftn(freq, axes=(0, 1))
print(res)
Результат выполнения кода:
[[1.+0.j 2.+0.j 3.+0.j]
[4.+0.j 5.+0.j 6.+0.j]
[7.+0.j 8.+0.j 9.+0.j]]
Пример
Используем параметр s для изменения размера выходного массива:
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6]])
freq = np.fft.fftn(arr)
res = np.fft.ifftn(freq, s=(3, 4))
print(res)
Результат выполнения кода:
[[ 1. +0.j 2. +0.j 3. +0.j 0. +0.j]
[ 4. +0.j 5. +0.j 6. +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]])
freq = np.fft.fftn(arr, norm="ortho")
res = np.fft.ifftn(freq, norm="ortho")
print(res)
Результат выполнения кода:
[[1.+0.j 2.+0.j]
[3.+0.j 4.+0.j]]