我有这段代码:
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%),计算机被绞死 有什么办法可以减少施加在系统上的压力并加快操作速度吗?
答案 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