1 FFT

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

torch.fft.fft(input,

n=None,

dim=- 1,

norm=None,

*,

out=None)

1.1 主要参数

input输入,需要傅里叶变换的tensorn 需要变换的tensor的长度,默认是input的长度

如果比input长度大,那么补0如果比input长度小,那么截取dim哪一个维度进行快速傅里叶变换norm

‘forward’:用1/n 正则化‘backward’:无需正则化‘ortho’:使用1/sqrt(n)正则化

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输入,需要傅里叶变换的tensorn 需要变换的tensor的长度,默认是input的长度

如果比input长度大,那么补0如果比input长度小,那么截取dim哪一个维度进行快速傅里叶变换norm

‘forward’:用1/n 正则化‘backward’:无需正则化‘ortho’:使用1/sqrt(n)正则化

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输入,需要傅里叶变换的tensorn 需要变换的tensor的长度,默认是input的长度

如果比input长度大,那么补0如果比input长度小,那么截取dim哪一个维度进行快速傅里叶变换norm

‘forward’:用1/n 正则化‘backward’:无需正则化‘ortho’:使用1/sqrt(n)正则化

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.]])

'''

推荐阅读

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: