这里说的是离散二维傅立叶变换,根据其变换核可分离的特点,我们可以通过两次离散一维傅立叶变换来完成其计算。
在MATLAB中,我们用fft2函数来进行傅立叶变换,事实上,根据MATLAB的帮助文档说明,fft2的计算相当于
fft2(f)=fft(fft(f).').'
也就是说,先对行进行一维离散傅立叶变换,然后转置,再对列进行傅立叶变换,最后转置,即可得到最终的结果。又,我们在实际计算的时候,往往需要先计算一维离散傅立叶变换的变换矩阵W,然后F=(W(Wf)')'。这样为我们的笔算,比如在考试中的计算提供了方便,不需要根据定义来计算,非常的简单。
clear;
clc;
f=[0,1,1,0;
0,1,1,0;
0,1,1,0;
0,1,1,0;]
N=4;
%计算转换矩阵(变换核)
for n=0:N-1
for v=0:N-1
W(n+1,v+1)=exp(-j*2*pi*n*v/N);
end
end
F1=1/N*(W*(W*f).').' %对于复数矩阵的转置,使用“.'”表示不取共轭,使用“'”表示取共轭
F2=1/N*fft2(f)
F3=1/N*fft(fft(f).').'
F=fft(f)/sqrt(N)