今天看了看傅里叶变换的公式想自己实现以下加深映像便于对公式的理解所以写了以下代码,还是挺简单的,以前一直惧怕傅里叶,没想到就这一个公式就搞定了
先上代码(MATLAB)
clc;
a=[1 1 1 1;
1 1 1 1;
1 1 1 1;
1 1 1 1]
b=zeros(4);
temp=0;
for r=1:4
for c=1:4
for w=1:4
for h=1:4
temp=a(w,h)*exp(-2j*pi*((r-1)*(w-1)/4+(c-1)*(h-1)/4));
b(r,c)=b(r,c)+temp;
end
end
end
end
b
公式:
结果如下
a =
1 1 1 1
1 1 1 1
1 1 1 1
1 1 1 1
b =
16.0000 + 0.0000i -0.0000 - 0.0000i 0.0000 - 0.0000i 0.0000 - 0.0000i
-0.0000 + 0.0000i -0.0000 - 0.0000i 0.0000 + 0.0000i -0.0000 - 0.0000i
0.0000 - 0.0000i -0.0000 - 0.0000i 0.0000 + 0.0000i -0.0000 - 0.0000i
0.0000 - 0.0000i -0.0000 - 0.0000i -0.0000 + 0.0000i -0.0000 + 0.0000i
>>
以下是matlab自己的函数结果:
>> fft2(a)
ans =
16 0 0 0
0 0 0 0
0 0 0 0
0 0 0 0
>>
结果一致!