1 FFT
进行一个维度的快速傅里叶变换
torch.fft.fft(input, n=None, dim=- 1, norm=None, *, out=None)
1.1 主要参数
input | 输入,需要傅里叶变换的tensor |
n | 需要变换的tensor的长度,默认是input的长度
|
dim | 哪一个维度进行快速傅里叶变换 |
norm |
|
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的长度
|
dim | 哪一个维度进行快速傅里叶变换 |
norm |
|
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的长度
|
dim | 哪一个维度进行快速傅里叶变换 |
norm |
|
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.]])'''