【发布时间】:2018-03-01 19:23:01
【问题描述】:
function [output1, output2] = fft2D(input)
output1 = input';
output1 = fft(output1);
output1 = output1';
output1 = fft(output1);
output2 = fft2(input);
end
所以我在输出 2 中计算 input 的 2D FFT,在输出 1 中计算 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。任何帮助或建议都会很棒!
【问题讨论】:
-
你正在转置输入
-
@AnderBiguri 更具体:P。使用的是复杂转置,而不是真正的转置。