1 FFT

进行一个维度的快速傅里叶变换

torch.fft.fft(input, n=None, dim=- 1, norm=None, *, out=None)

1.1 主要参数

input输入,需要傅里叶变换的tensor
n

需要变换的tensor的长度,默认是input的长度

  • 如果比input长度大,那么补0
  • 如果比input长度小,那么截取
dim哪一个维度进行快速傅里叶变换
norm
  • ‘forward’:用1/n 正则化
  • ‘backward’:无需正则化
  • ‘ortho’:使用1/sqrt(n)正则化

1.2举例

import torcha=torch.Tensor([0,1,2,3,4])torch.fft.fft(a)'''tensor([10.0000+0.0000j, -2.5000+3.4410j, -2.5000+0.8123j, -2.5000-0.8123j,-2.5000-3.4410j])'''

2 iFFT

逆正则化

torch.fft.ifft(input, n=None, dim=- 1, norm=None, *, out=None) 

2.1 主要参数

input输入,需要傅里叶变换的tensor
n

需要变换的tensor的长度,默认是input的长度

  • 如果比input长度大,那么补0
  • 如果比input长度小,那么截取
dim哪一个维度进行快速傅里叶变换
norm
  • ‘forward’:用1/n 正则化
  • ‘backward’:无需正则化
  • ‘ortho’:使用1/sqrt(n)正则化

2.2 举例

import torcha=torch.Tensor([[0,1,2,3],[3,4,6,7]])torch.fft.ifft(torch.fft.fft(a))'''tensor([[0.+0.j, 1.+0.j, 2.+0.j, 3.+0.j],[3.+0.j, 4.+0.j, 6.+0.j, 7.+0.j]])'''

3 rFFt

将FFT结果中虚数部分为负,且有对应共轭的那一部分去除,减少存储量

torch.fft.rfft(input, n=None, dim=- 1, norm=None, *, out=None) 

3.1 主要参数

input输入,需要傅里叶变换的tensor
n

需要变换的tensor的长度,默认是input的长度

  • 如果比input长度大,那么补0
  • 如果比input长度小,那么截取
dim哪一个维度进行快速傅里叶变换
norm
  • ‘forward’:用1/n 正则化
  • ‘backward’:无需正则化
  • ‘ortho’:使用1/sqrt(n)正则化

3.2 举例(和FFT的对比)

import torcha=torch.Tensor([[0,1,2,3],[3,4,6,7]])torch.fft.fft(a)'''tensor([[ 6.+0.j, -2.+2.j, -2.+0.j, -2.-2.j],[20.+0.j, -3.+3.j, -2.+0.j, -3.-3.j]])'''torch.fft.rfft(a)'''tensor([[ 6.+0.j, -2.+2.j, -2.+0.j],[20.+0.j, -3.+3.j, -2.+0.j]])'''

4 irfft

rfft的逆运算

import torcha=torch.Tensor([[0,1,2,3],[3,4,6,7]])torch.fft.irfft(torch.fft.rfft(a))'''tensor([[0., 1., 2., 3.],[3., 4., 6., 7.]])'''