我试图了解当我们在 matlab 中对矩阵进行 FFT2 时会发生什么。
首先看看这个简单的例子,
a=ones(8); %8x8 Matrix of Ones
fft2(a)
它将生成以下输出,
64 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
在上面的矩阵中,64是所有矩阵值的总和,它是DC系数。这是否意味着 64 计算为8*8 = 64 ?
现在是实际问题,我生成了一个 4,4 的矩阵,
a = [zeros(4,2) ones(4,2)]
% 0 0 1 1
% 0 0 1 1
% 0 0 1 1
% 0 0 1 1
前 4 行和 2 列是 0,而其余的是 1,如上所示。
现在,如果我采用它的 FFT2,
fft2(a)
它生成以下输出,
8.0000 -4.0000 + 4.0000i 0 -4.0000 - 4.0000i
0 0 0 0
0 0 0 0
0 0 0 0
根据这本书,输出中显示的值是直流系数,它确实是所有矩阵值的总和。
在前面的例子中,很容易计算 DC 系数,但在这个例子中,这些值是如何生成的?
8.0000 -4.0000 + 4.0000i 0 -4.0000 - 4.0000i
如果我计算fft
而不是fft2
它会给出以下输出
%FFT -> DFT of Vector
%FFT2 -> DFT of Matrix
0 0 4 4
0 0 0 0
0 0 0 0
0 0 0 0