求救 缩减多重for循环

来源:百度知道 编辑:UC知道 时间:2024/06/22 07:34:58
程序需要优化部分如下:
for ( k = 0; k < M ; k ++)
{
for ( l = 0; l < N ; l ++)
{
for ( i = 0; i < M ; i ++)
{
for ( j = 0; j < N ; j ++)
{
gray1 = fre[j * step2 + i] ;
gray2 = fure[j * step2 + i] ;
co = cos ( dPi * ( k * i / M + l * j / N));
si = sin ( dPi * ( k * i / M + l * j / N));
re = gray1 * co - gray2 * si;
ure= gray1 * si + gray2 * co;
renum += re;
urenum += ure;
}
}
printf("%d",k);
c[ l * step3 + k] = (uchar)(sqrt(renum * renum + urenum
* urenum));
renum = 0;
urenum = 0;
}
}
在取值的时候M,N都要取到300-400之间,结果运行的时候程序需要半个小时以上才能完成,求救高人帮忙,看程序是否可以优化,那怕优化后10分钟运行出来也可以接受啊~ 小弟在此谢谢了
补充一下 这个是对输入图像进行傅立叶变换,其中输入就是图像的X,Y轴的像素点,有一种快速傅立叶变换办法,可是时间仓促来不及学了,能不能在这个算法的基础上改变循环?

程序优化,先要优化算法,再优化代码

kao,M,N的值还要300-400,自己看看你的代码要循环多少次啊!这多for嵌套,改改你的算法吧……

把你的输入和输出说出来,这样我才好设计算法