РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
168 of 541 menu

Функция 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 ]]

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

  • функцию fft,
    которая выполняет одномерное быстрое преобразование Фурье
  • функцию ifft2,
    которая выполняет двумерное обратное преобразование Фурье
  • функцию fftn,
    которая выполняет n-мерное быстрое преобразование Фурье
  • функцию fftshift,
    которая сдвигает нулевую частоту в центр спектра
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить