这是离散傅立叶变换及其相关函数的包。使用之前必须先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])



