Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
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 для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить