各位大侠,我现在用vc要实现一个fft2功能,可是为什么结果总是不对呢?我将此功能单独拿出来和matlab中的fft2函数算的结果比较,总是不一样,而且有的差很多,这是为什么呢?难道我的vc程序有问题吗?
我具体的实现方法是:
二维离散傅里叶变换可以由两步一维离散傅里叶变换来实现:1.出每一行的一维的FFT,并存储在一个中间距阵中;2.将中间矩阵转置;3.求出转置中间距阵中每一行的一维FFT,再将之转置即可。代码:for(j=0;j<h;j++)//在垂直方向上进行快速傅里叶变换
{
for(i=0;i<wl;i++)
te[i]=t[wl*j+i];
FourierTransform(te,fe,0,1);
for(i=0;i<wl;i++)
{
f[wl*j+i]=fe[i];
}
}
for(j=0;j<h;j++)//转换变换结果
{
for(i=0;i<wl;i++)
{
t[j+h*i]=f[i+wl*j];
}
} for(j=0;j<wl;j++)//水平方向进行快速傅里叶变换
{
for(i=0;i<h;i++)
te[i]=t[h*j+i]; FourierTransform(te,fe,0,1); for(i=0;i<h;i++)
f[h*j+i]=fe[i];
}请高人指点一下。。十万火急。。如果有误,请高人给个正确的实现代码。