前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >代码详解——MATLAB出图:常用函数

代码详解——MATLAB出图:常用函数

作者头像
路径跟踪快讯
发布2020-10-28 17:19:15
1.5K0
发布2020-10-28 17:19:15
举报

通过仿真获得数据后,还需要通过MATLAB将数据绘制成图片插入论文中,本期代码详解将着重介绍路径跟踪控制绘图常用的函数。

以2020年9月28日和2020年10月12日的代码为例进行绘图,代码详见:

2020年9月28日代码: 白国星,公众号:Path Tracking Letters代码详解——MATLAB/Simulink实时性仿真

2020年10月12日代码 白国星,公众号:Path Tracking Letters代码详解——如何计算航向误差?

首先考虑到数据的重复利用问题,先介绍数据的保存与读取。

运行完Simulink仿真和误差计算程序后,Workspace空间会出现如图红色框中所示的数据。

全选这些数据,将其另存为matlab1.mat,即可在当前文件夹保存这些数据。

读取这些数据时,可以用函数:

load('matlab1.mat');

matlab1.mat即当前文件夹中的数据文件名称。

根据仿真中的定义,可知x0、y0为参考路径横、纵坐标,x1、y1为实际轨迹横、纵坐标,我们首先可以利用这些数据绘制轨迹图,代码如下:

plot(x0(1),y0(1),'ko');%绘制起点(也可选择实际轨迹的起点),k为黑色,o为圆圈

hold on;%保持命令,在同一个图上画多条曲线时需要置为on,默认为hold off

plot(x1(15507),y1(15507),'k*');%绘制终点,括号内的值需要与数组对应,k为黑色,*为*号

plot(x0,y0,'g');%绘制参考路径,g为绿色,默认实线

plot(x1,y1,'r-.');%绘制实际轨迹,r为红色,设为点划线

xlabel('\itX\rm/m');%x轴标签,\it为设置后续文字斜体,\rm为设置后续文字正体,坐标轴标签需要设置为两行时,可以写为xlabel({'\itX\rm/m','(a)'});其中(a)在第二行

ylabel('\itY\rm/m');%y轴标签

legend('\fontname{宋体}起点','\fontname{宋体}终点','\fontname{宋体}参考路径','\fontname{宋体}实际轨迹');%图例,宋体字在不是MATLAB默认字体,\fontname{宋体}为设置后续文字字体为宋体,如果后续文字还有英文,需要设置为Times New Roman时,则需要写为'\fontname{宋体}实际轨迹\fontname{Times New Roman}Real trajectory'

axis([-10 150 -10 110]);%坐标轴范围

box off;%删除图片上除坐标轴外的黑框,国内很多EI期刊要求出图时删掉黑框

绘制结果为:

此外还可绘制横向误、航向误差和计算时间图:

figure(2)

plot(ll,e,'r');

xlabel('\fontname{宋体}里程\fontname{Times New Roman}/m');

ylabel('\fontname{宋体}位移误差\fontname{Times New Roman}/m');

box off;

figure(3)

plot(ll,eh,'r');

xlabel('\fontname{宋体}里程\fontname{Times New Roman}/m');

ylabel('\fontname{宋体}航向误差\fontname{Times New Roman}/rad');

box off;

figure(4)

plot(t,'r');

xlabel('\fontname{宋体}仿真时间\fontname{Times New Roman}/s');

ylabel('\fontname{宋体}计算时间\fontname{Times New Roman}/s');

box off;

绘制结果为:

出现计算时间这种情况后,可以先运行:

xlabel('\fontname{宋体}仿真时间\fontname{Times New Roman}/s');

ylabel('\fontname{宋体}计算时间\fontname{Times New Roman}/s');

然后再重复运行:

plot(t,'r');

xlabel('\fontname{宋体}仿真时间\fontname{Times New Roman}/s');

ylabel('\fontname{宋体}计算时间\fontname{Times New Roman}/s');

box off;

另“时序图”字样可以运行如下代码去除:

title('');

源码

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-10-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Path Tracking Letters 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档