【发布时间】:2013-05-25 11:12:37
【问题描述】:
我必须自己编写 2D DFT,我目前正在使用它
for l=0:1:m-1
for k=0:1:n-1
for x=0:1:n-1
for y=0:1:m-1
a=x+1;b=y+1;
c= im3(a,b) * exp(-1i*2*pi*(k*x/n + l*y/m));
c1=c1+c;
end
end
aa=l+1;bb=k+1;
im(bb,aa)=c1;
c1=0;
end
end
它适用于较小的图像,但当像素尺寸或数组变大时,它会变得异常缓慢。有人可以帮忙吗?
im3是存储像素值的数组,im是算法执行后存储像素值的数组
【问题讨论】:
-
您是否预先分配了
im,或者在循环之前它是否已经存在于工作区中? -
是的,我已经处理好了。
-
您是否考虑过使用FFT 和vectorizing 您的代码?请注意,尽管您将帖子标记为“FFT”,但您似乎没有使用 FFT。
-
你使用了太多的循环,尽量避免使用矩阵操作至少其中两个。它会加速你的代码。还有一点,如果你有并行计算工具箱,如果你的计算机上有多个内核,请尝试使用 parfor