如何在Matlab中绘制矩阵,将矩阵索引视为x-y轴上的坐标

时间:2019-06-08 06:30:09

标签: matlab matlab-figure

在我的以下代码中,区域是一个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秒钟。

我认为我缺少一些非常基本的东西,而这可以非常有效地完成,而我只是想不到。请帮助我重写此代码,以便满足我的目的。

我的绘图代码的示例输出: enter image description here

1 个答案:

答案 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, '.');