在我的以下代码中,区域是一个1000x1500矩阵。我想在X-Y图表纸上绘制此矩阵的值。因此,我的假设图表纸由1:1000的X值和1:1500的Y值组成。
function plotRegion(region)
figure;
[a,b]=size(region);
hold on;
for i=1:a
for j=1:b
if(region(i,j)>0)
plot(i,j ,'.' );
end
end
end
hold off;
end
我正在遍历矩阵的每个值,并且每当看到大于0的值时,便会在图中绘制一个点。尽管上面的代码可以正常工作,但是在我的计算机上运行大约需要70秒钟。
我认为我缺少一些非常基本的东西,而这可以非常有效地完成,而我只是想不到。请帮助我重写此代码,以便满足我的目的。
答案 0 :(得分:1)
您可以使用find
代替迭代region
,并使用scatter
代替plot
如果您不关心点的颜色,只需执行以下操作即可:
[Y, X] = find(region > 0);
plot(X, Y, '.')
如果您要保留颜色:
仍然花费太长时间...
[Y, X] = find(region > 0);
for i = 1:length(X)
plot(X(i), Y(i), '.' );
end
考虑使用scatter
代替plot
。
scatter
更适合于绘制点:
[Y, X] = find(region > 0);
C = 1:length(X); %Colors
C = mod(C, 7); %Try to fix the colors
scatter(X, Y, [], C, '.');