gpt4 book ai didi

与跨行和列执行的多个 fft (1D) 相比,Matlab fft2 (2D) 给出了交换值

转载 作者:太空宇宙 更新时间:2023-11-03 19:56:30 25 4
gpt4 key购买 nike

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() 对二维矩阵应用跨列向量的 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

关于与跨行和列执行的多个 fft (1D) 相比,Matlab fft2 (2D) 给出了交换值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49057222/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com