pytorhc(v1.7.1)中torch.rfft(3,oneside=False) 和 MATLAB中fftn()的关系
作者:互联网
目录
问题描述
将一个MATLAB算法更改为python代码的过程中遇到了一个问题:
当输入的tensor/多维矩阵是mnp的三维矩阵时,
MATLAB中使用的是fftn(),输出为mnp
Python中使用的是torch.rfft(3,oneside=False),输出为mnp*2
根据Pytorch官方文档的描述:
Returns
A tensor containing the real-to-complex Fourier transform result
猜测torch.rfft中的2代表实部和虚部.
验证
对于相同的输入psf
MATLAB中
fpsf_1 = fftn(psf);
Python中
fpsf = psf.rfft(3, onesided=False)
之后统一到MATLAB中进行验证:
>> fpsf(2,2,2,:)
1×1×1×2 single 数组
ans(:,:,1,1) =
-3.7205
ans(:,:,1,2) =
3.3637
>> fpsf_1(2,2,2)
ans =
-3.7205 + 3.3637i
>> fpsf(32,66,43,:)
1×1×1×2 single 数组
ans(:,:,1,1) =
0.0342
ans(:,:,1,2) =
-0.0213
>> fpsf_1(32,66,43)
ans =
0.0342 - 0.0213i
结论
当oneside=False时,torch.rfft的输出的确是实部和虚部
标签:oneside,False,torch,rfft,MATLAB,ans,fpsf 来源: https://blog.csdn.net/qazwsxrx/article/details/117191603