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

Функция fft.fft2

Функция fft.fft2 выполняет двумерное быстрое преобразование Фурье (БПФ) над входным тензором. Она вычисляет дискретное преобразование Фурье по двум последним осям тензора. Функция принимает входной тензор, а также опциональные параметры для указания размера преобразования, нормализации и размерности. Результатом является комплексный тензор той же формы, что и входной.

Синтаксис

torch.fft.fft2(input, s=None, dim=(-2, -1), norm=None)

Параметры функции:

  • input - входной тензор для преобразования;
  • s - кортеж из двух чисел, определяющий размер выходного тензора после преобразования (по умолчанию None, что означает использование исходного размера);
  • dim - кортеж из двух чисел, указывающий оси, по которым выполняется преобразование (по умолчанию (-2, -1), то есть две последние оси);
  • norm - строка, определяющая тип нормализации ('backward' - стандартное БПФ, 'forward' - нормализация по размеру преобразования, 'ortho' - ортогональная нормализация).

Пример

Давайте выполним двумерное преобразование Фурье над матрицей 3x3:

import torch t = torch.tensor([ [1, 2, 3], [4, 5, 6], [7, 8, 9], ], dtype=torch.float) res = torch.fft.fft2(t) print(res)

Результат выполнения кода:

tensor([ [45.0000+0.j, -4.5000+2.5981j, -4.5000-2.5981j], [-13.5000+7.7942j, 0.0000+0.j, 0.0000+0.j], [-13.5000-7.7942j, 0.0000+0.j, 0.0000+0.j], ])

Пример

Используем параметр s для изменения размера выходного тензора. Если размер больше исходного, выполняется дополнение нулями:

import torch t = torch.tensor([ [1, 2], [3, 4], ], dtype=torch.float) res = torch.fft.fft2(t, s=(4, 4)) print(res.shape) print(res)

Результат выполнения кода:

torch.Size([4, 4]) tensor([ [10.0000+0.j, 0.0000+0.j, -2.0000+0.j, 0.0000+0.j], [-2.0000+2.j, 0.0000+0.j, 0.0000+0.j, 0.0000+0.j], [-2.0000+0.j, 0.0000+0.j, -2.0000+0.j, 0.0000+0.j], [-2.0000-2.j, 0.0000+0.j, 0.0000+0.j, 0.0000+0.j], ])

Пример

Применим ортогональную нормализацию с помощью параметра norm:

import torch t = torch.tensor([ [1, 1], [1, 1], ], dtype=torch.float) res = torch.fft.fft2(t, norm='ortho') print(res)

Результат выполнения кода:

tensor([ [2.0000+0.j, 0.0000+0.j], [0.0000+0.j, 0.0000+0.j], ])

Пример

Изменим оси для преобразования с помощью параметра dim. В трехмерном тензоре выполним преобразование по осям 0 и 2:

import torch t = torch.randn(2, 3, 4) res = torch.fft.fft2(t, dim=(0, 2)) print(res.shape)

Результат выполнения кода:

torch.Size([2, 3, 4])

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

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