繁体   English   中英

如何在Matlab中计算FFT2

[英]How FFT2 is computed in Matlab

所以我有这个矩阵M =(50,50,250),我想获得沿第3维= 250的切片S =(50,50)的FFT2。

假设我愿意

FT = fftshift(fft2(M));

这是我要计算的FT吗?

因为在函数描述中它说函数针对X的每个高维切片返回2-DFT。例如,如果size(X)= [100 100 3],则fft2计算X(:,:, 1),X(:,:,2)和X(:,:,3)

因此,我假设它正在计算沿第一个维度= 50的切片的FT == 50x250。

有人可以告诉我吗?

我认为从文档中可以很清楚地看出。 fft2计算250个2D DFT,每个M中的50x50切片一个。因此,您的FT(:,:,i)是M(:,:,i)的2D DFT。 它的行为与:

FT = zeros(size(M));
for i = 1 : size(M, 3)
    FT(:, :, i) = fft2(M(:, :, i));
end

您可以按照以下方式进行验证( error应该很小):

FT1 = fft2(M);
error = norm(abs(FT1(:) - FT(:)));

但是, fftshift的行为与您想要的不一致。 您应该改用fftshift的第二个参数沿特定尺寸(在您的情况下为1和2)移动结果:

FT = fftshift(fftshift(fft2(M), 1), 2);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM