function [output1, output2] = fft2D(input)
output1 = input';
output1 = fft(output1);
output1 = output1';
output1 = fft(output1);
output2 = fft2(input);
end
因此,我在output2中计算input
的2D FFT,并在output1中计算input
的相同2D FFT。 fft()
对于2D矩阵应用跨列向量的FFT。所以上面我将它应用于行,然后应用于列。
但是对于随机矩阵
[1 1 4 1;
12 13 124 1;
12 2 2 1;
1 1 1 0]
我的output1
是:
1.0e+02 *
1.7700 + 0.0000i -1.0500 + 0.1400i 1.3700 + 0.0000i -1.0500 - 0.1400i
-0.1000 - 1.4700i -0.0200 + 1.1100i -0.0800 - 1.2100i -0.2400 + 1.1300i
-1.2900 + 0.0000i 1.1900 - 0.1200i -1.0900 + 0.0000i 1.1900 + 0.1200i
-0.1000 + 1.4700i -0.2400 - 1.1300i -0.0800 + 1.2100i -0.0200 - 1.1100i
而我的output2
是
1.0e+02 *
1.7700 + 0.0000i -1.0500 - 0.1400i 1.3700 + 0.0000i -1.0500 + 0.1400i
-0.1000 - 1.4700i -0.2400 + 1.1300i -0.0800 - 1.2100i -0.0200 + 1.1100i
-1.2900 + 0.0000i 1.1900 + 0.1200i -1.0900 + 0.0000i 1.1900 - 0.1200i
-0.1000 + 1.4700i -0.0200 - 1.1100i -0.0800 + 1.2100i -0.2400 - 1.1300i
它们是相同的值,但在不同的位置互换!这让我疯狂很长一段时间,因为从我(重新)在线阅读可以通过在行和列之间应用1D FFT来执行2D FFT。任何帮助或建议都会很棒!
使用output1 = output1.'
而不是output1 = output1'
,因为后者给出共轭转置,你想要转置。
function [output1, output2] = fft2D(input)
output1 = input.';
output1 = fft(output1);
output1 = output1.';
output1 = fft(output1);
output2 = fft2(input);
end
或者,您可以指定尺寸以进行FFT。
function [output1, output2] = fft2D(input)
output1 = fft(input,[],1);
output1 = fft(output1,[],2);
output2 = fft2(input);
end