利用Matlab快速绘制栅格地图
代码演示
% 基于栅格地图的机器人路径规划算法 % 第1节:利用Matlab快速绘制栅格地图 clc clear close all %% 构建颜色MAP图 cmap = [1 1 1; ... % 1-白色-空地 0 0 0; ... % 2-黑色-静态障碍 1 0 0; ... % 3-红色-动态障碍 1 1 0;... % 4-黄色-起始点 1 0 1;... % 5-品红-目标点 0 1 0; ... % 6-绿色-到目标点的规划路径 0 1 1]; % 7-青色-动态规划的路径 % 构建颜色MAP图 colormap(cmap); %% 构建栅格地图场景 % 栅格界面大小:行数和列数 rows = 10; cols = 20; % 定义栅格地图全域,并初始化空白区域 field = ones(rows, cols); % 障碍物区域 obsRate = 0.3; obsNum = floor(rows*cols*obsRate); %定义障碍物的数量 obsIndex = randi([1,rows*cols],obsNum,1); %定义障碍物的线性索引值 field(obsIndex) = 2; %将地图区域中障碍物的值设置为2 % 起始点和目标点 startPos = 2; goalPos = rows*cols-2; field(startPos) = 4; field(goalPos) = 5; %% 画栅格图 image(1.5,1.5,field); grid on; set(gca,'gridline','-','gridcolor','k','linewidth',2,'GridAlpha',0.5); %设置栅格线条的样式(颜色、透明度等) set(gca,'xtick',1:cols+1,'ytick',1:rows+1); %设置横纵方向上步长为1 axis image;
axis tight 将坐标轴显示的框调整到显示数据最紧凑的情况
也就根据x,y坐标的最大值和最小值最紧凑调整坐标轴的显示范围,
axis equal 等比例显示x,y坐标轴,由于x,y轴的范围是可以分辨调整的
所以很容易让得到的图像在屏幕上显示,x,y方向的比例不一致,圆形显示为椭圆形
为了方便比较,这个命令可以让x轴和y轴比例一致
但是分别执行以上两个命令,会互相覆盖,紧凑显示的时候,比例不对
比例对了的时候,显示不紧凑,留太多空白
axis image
相当于以上两个命令的合体,能够同时实现紧凑以及xy比例一致两个功能
也就根据x,y坐标的最大值和最小值最紧凑调整坐标轴的显示范围,
axis equal 等比例显示x,y坐标轴,由于x,y轴的范围是可以分辨调整的
所以很容易让得到的图像在屏幕上显示,x,y方向的比例不一致,圆形显示为椭圆形
为了方便比较,这个命令可以让x轴和y轴比例一致
但是分别执行以上两个命令,会互相覆盖,紧凑显示的时候,比例不对
比例对了的时候,显示不紧凑,留太多空白
axis image
相当于以上两个命令的合体,能够同时实现紧凑以及xy比例一致两个功能
总结:
Image()函数根据矩阵来绘制栅格图,矩阵中的数值代表颜色的类别;
颜色的类别可以通过colormap()函数固定有哪些(矩阵中的数值为cmap中的index(索引值));
从而Image通过矩阵中数值显示的数值只能来自于colormap中的;
axis image设置栅格图x、y比例相等
我们向往远方,却忽略了此刻的美丽