[英]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.