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 torch
a=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 torch
a=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 torch
a=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 torch
a=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.]])
'''