torch.fft

这是离散傅立叶变换及其相关函数的包。使用之前必须先import torch.fft

torch.fft.fft(input, n=None, dim=-1, norm=None) → Tensor

一维傅立叶变换。

参数:

  • input (Tensor):输入张量
  • n (int, optional) :信号长度,如果给定,那么输入张量要么被zero-padding到信号长度,要么被剪裁到信号长度。
  • dim (int, optional):做一维傅立叶变换的维度。
  • norm (str, optional):归一化模式。
    • “forward” - normalize by 1/n
    • “backward” - no normalization
    • “ortho” - normalize by 1/sqrt(n) (making the FFT orthonormal)

例子:

>>> import torch.fft
>>> t = torch.arange(4)
>>> t
tensor([0, 1, 2, 3])
>>> torch.fft.fft(t)
tensor([ 6.+0.j, -2.+2.j, -2.+0.j, -2.-2.j])
>>> t = tensor([0.+1.j, 2.+3.j, 4.+5.j, 6.+7.j])
>>> torch.fft.fft(t)
tensor([12.+16.j, -8.+0.j, -4.-4.j,  0.-8.j])

torch.fft.ifft(input, n=None, dim=-1, norm=None) → Tensor

一维傅立叶逆变换。

参数: 与一维傅立叶变换一致。

例子:

>>> import torch.fft
>>> t = torch.tensor([ 6.+0.j, -2.+2.j, -2.+0.j, -2.-2.j])
>>> torch.fft.ifft(t)
tensor([0.+0.j, 1.+0.j, 2.+0.j, 3.+0.j])

torch.fft.fftn(input, s=None, dim=None, norm=None) → Tensor

N维傅立叶变换。

参数:

  • input (Tensor):输入张量
  • s (Tuple[int], optional):信号尺寸,如果给定,那么输入张量要变换的维度要么被zero-padding到信号尺寸,要么被剪裁到信号尺寸。
  • dim (Tuple[int], optional):做N维傅立叶变换的维度。
  • norm (str, optional):归一化模式。
    • “forward” - normalize by 1/n
    • “backward” - no normalization
    • “ortho” - normalize by 1/sqrt(n) (making the FFT orthonormal)。n = prod(s),是s中所有元素的乘积。

例子:

>>> import torch.fft
>>> x = torch.rand(10, 10, dtype=torch.complex64)
>>> fftn = torch.fft.fftn(t)

由于离散傅立叶变换是可分的,因此二维的离散傅立叶变换等价于两个一维的离散傅立叶变换。

>>> two_ffts = torch.fft.fft(torch.fft.fft(x, dim=0), dim=1)
>>> torch.allclose(fftn, two_ffts)

torch.fft.ifftn(input, s=None, dim=None, norm=None) → Tensor

N维傅立叶逆变换。

参数: 与维维傅立叶变换一致。

例子:

>>> import torch.fft
>>> x = torch.rand(10, 10, dtype=torch.complex64)
>>> ifftn = torch.fft.ifftn(t)

由于离散傅立叶逆变换是可分的,因此二维的离散傅立叶逆变换等价于两个一维的离散傅立叶逆变换。

>>> two_iffts = torch.fft.ifft(torch.fft.ifft(x, dim=0), dim=1)
>>> torch.allclose(ifftn, two_iffts)

torch.fft.fftshift(input, dim=None) → Tensor

把转换后的频域图的低频部分放到图像中间,仅起到便于观察的作用。适用于N维。

参数:

  • input (Tensor):输入的频域张量。
  • dim (int, Tuple[int], optional):做顺序调换的维度。

例子:

>>> f = torch.fft.fftfreq(4)
>>> f
tensor([ 0.0000,  0.2500, -0.5000, -0.2500])
>>> torch.fft.fftshift(f)
tensor([-0.5000, -0.2500,  0.0000,  0.2500])

torch.fft.ifftshift(input, dim=None) → Tensor

fftshift()的逆变换。

参数: 与fftshift参数一致。

例子:

>>> f = torch.fft.fftfreq(5)
>>> f
tensor([ 0.0000,  0.2000,  0.4000, -0.4000, -0.2000])
>>> shifted = torch.fft.fftshift(f)
>>> torch.fft.ifftshift(shifted)
tensor([ 0.0000,  0.2000,  0.4000, -0.4000, -0.2000])
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值