花费太长时间来完成操作并使用大量物理内存

时间:2013-06-16 18:45:04

标签: image matlab image-processing time classification

我有这段代码:

function Plot2DScatter(img1,img2)
n = size(img1,1);
m = size(img2,1);
axis([0 280 0 280])
hold on
   for i=1:n
       for j=1:m
           x = img1(i,j);
           y = img2(i,j);
           plot(x,y);
       end
   end
end  

它是一个将在GUI中使用的函数。 img1和img2是两个2048 * 2048图像矩阵 所以你看到循环应该重复4194304次 我的问题是系统完成操作需要花费太多时间(大约45分钟),而且CPU使用率非常高。当它完成时,需要大量的物理内存(RAM)(大约45%),计算机被绞死 有什么办法可以减少施加在系统上的压力并加快操作速度吗?

1 个答案:

答案 0 :(得分:1)

在matlab中,你应尽量避免使用for循环,而是使用矩阵表达式。你想做的事情可以这样做:

plot(img1(:),img2(:))

img1(:)img2(:)将图像转换为可以直接用作绘图函数输入的向量。为了您的目的,使用分散功能可能会更好,该功能将您的数据直接绘制为圆圈。那就是:

function Plot2DScatter(img1,img2)
   scatter(img1(:),img2(:))
   axis([0 280 0 280]) % note with the axis statement 
                       % afterwards you do not need 'hold on'
end