中国汽车工程师之家--聚集了汽车行业80%专业人士 

论坛口号:知无不言,言无不尽!QQ:542334618 

本站手机访问:直接在浏览器中输入本站域名即可 

  • 413查看
  • 0回复

[MATLAB] matlab 通过hold方法实现添加新绘图时保留当前绘图

[复制链接]

该用户从未签到

发表于 26-8-2023 15:11:43 | 显示全部楼层 |阅读模式

汽车零部件采购、销售通信录       填写你的培训需求,我们帮你找      招募汽车专业培训老师


在一些算法中,需要循环在同一个figure不停的绘制多个点、曲线,这时候就需要通过hold方法实现添加新绘图时保留当前绘图

hold基本语法:

holdonholdoffholdallholdhold(ax,___)
语法说明:

hold on 保留当前坐标区中的绘图,从而使新添加到坐标区中的绘图不会删除现有绘图。新绘图基于坐标区的 ColorOrder 和 LineStyleOrder 属性使用后续的颜色和线型。MATLAB 将调整坐标区的范围、刻度线和刻度标签以显示完整范围的数据。如果不存在坐标区,hold 命令会创建坐标区。

hold off 将保留状态设置为 off,从而使新添加到坐标区中的绘图清除现有绘图并重置所有的坐标区属性。添加到坐标区的下一个绘图基于坐标区的 ColorOrder 和 LineStyleOrder 属性使用第一个颜色和线型。此选项为默认行为。

hold all 与 hold on 相同。在以后的版本中将会删除该语法。请改用 hold on。

hold 在 on 和 off 之间切换保留状态。

hold(ax,___) 为 ax 指定的坐标区而非当前坐标区设置 hold 状态。请在前面任何语法中的所有其他参数之前指定 ax。使用单引号将 'on' 和 'off' 输入引起来,例如 hold(ax,'on')。

1、在现有坐标区上添加线图
x = linspace(0,10);y1 = sin(x);y2 = cos(x);tiledlayout(2,1)
% Top plotax1 = nexttile;plot(ax1,x,y1)
% Bottom plotax2 = nexttile;plot(ax2,x,y2)
matlab 通过hold方法实现添加新绘图时保留当前绘图w1.jpg

向上方坐标区添加第二个正弦波。

matlab 通过hold方法实现添加新绘图时保留当前绘图w2.jpg

2、设置多个坐标区的保留状态

创建 1×2 分块图布局。调用 nexttile 函数以创建两个坐标区对象并在坐标区中绘图。
t = tiledlayout(1,2);ax1 = nexttile;ax2 = nexttile;plot(ax1,[0 1 0 1])scatter(ax2,rand(1,10),rand(1,10),'filled')
matlab 通过hold方法实现添加新绘图时保留当前绘图w3.jpg

将两个坐标区的 hold 状态都设置为 'on'。然后在每个图中显示附加数据。

matlab 通过hold方法实现添加新绘图时保留当前绘图w4.jpg

hold on的实例:绘制分岔图

# 常见的逻辑斯蒂映射f(x)=rx(1-x)clear;%清除变量clc;%清除显示r=-2:0.01:4;%分岔图以r为横坐标,定义域-2到4x=0.3;%对任意r,随便给0到1内初值fori=1:5000 %先迭代很多次达到稳定x=r.*x.*(1-x);%迭代的式子end%循环或判断均以end结束figure;%给一个图像画板holdon;%画新图时画板上保留旧图fori=1:1000 %这些循环是要画在图上的x=r.*x.*(1-x);%迭代的式子plot(r,x,'k.','markersize',1);%描点画图end
matlab 通过hold方法实现添加新绘图时保留当前绘图w5.jpg

快速发帖

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|Archiver|汽车工程师之家 ( 渝ICP备18012993号-1 )

GMT+8, 29-4-2024 16:08 , Processed in 0.289145 second(s), 30 queries .

Powered by Discuz! X3.5

© 2001-2013 Comsenz Inc.