MATLAB坐标系中绘制图片

MATLAB坐标系中绘制图片

方法一

使用图片坐标循环的方式,代码如下。

clear,clc,close all
tic;
map=imbinarize(imread(\'map.bmp\'));%map is logical

for i = 1:1000
    for j = 1:1000
        if map(i,j)
          continue;
        else
          plot(i,j,\'LineStyle\',\'none\',\'Marker\',\'.\',\'Color\',\'black\');
          hold on;
        end
    end
end
fprintf(\'processing time=%d \n\', toc);

运行时间为1.538011e+02 秒,且运行完很卡,基本不能使用,小规模矩阵可以考虑。

可以考虑使用一定方法进行优化,比如分割成小矩阵判断是否为全零矩阵决定是否对这一区域进行绘图;取小矩阵的中心点进行测试等。

方法二

使用向量化编程。

clear,clc,close all

tic;
map=flipud(imbinarize(imread(\'map.bmp\')));%map is logical
% 测试数据矩阵大小
[m,n] = size(map);
% 得到0的下标
[row,col] = ind2sub([m,n],find(~map));
% 作散点图
figure;
scatter(0.1.*col,0.1.*row,\'k\',\'.\'),hold on;

fprintf(\'processing time=%d \n\', toc);

运行时间为7.904587e-02秒,应用效果很好。

参考文献

小木虫-libralibra

百度知道