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

时间:2018-03-01 19:23:01

标签: matlab fft

self.trading_api = 'https://poloniex.com/tradingApi'

因此,我在output2中计算function [output1, output2] = fft2D(input) output1 = input'; output1 = fft(output1); output1 = output1'; output1 = fft(output1); output2 = fft2(input); end 的2D FFT,并在output1中计算input的相同2D FFT。对于2D矩阵,input适用于跨列向量的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

它们是相同的值,但在不同的位置互换!这让我疯狂很长一段时间,因为从我(重新)在线阅读可以通过在行和列之间应用1D FFT来执行2D FFT。任何帮助或建议都会很棒!

1 个答案:

答案 0 :(得分:5)

使用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