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秒,应用效果很好。
参考文献: