Matlab——学习记录篇1番外篇——hold on与hold off的区别

本文详细介绍了Matlab中holdon和holdoff的功能及使用方法。holdon用于保留当前坐标区的绘图,使得后续图形叠加显示;而holdoff则清除现有绘图,重置坐标区属性。通过实例代码展示了两者单独使用及组合使用的效果,强调了hold命令对后续图形叠加的影响。
摘要由CSDN通过智能技术生成

重点重点!!!!!!!本人使用的Matlab版本是R2021b,如果下面代码在别的版本运行之后有bug显示的话,需要自己到百度寻找相应的函数把错误的地方替换

        继上一篇学习记录篇1,编程的时候一直对hold on和hold off 有疑惑,于是课后我就自己摸索摸索,自己用了几次hold on和hold off,但是单独分开用的时候,一直都没有区别,直到我把它们放在一起用的时候,我才发现区别,然后我又像上一篇记录篇一样,在Matlab里面看hold的使用帮助,它里面的解释是这样的:

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

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

        其实除了hold on和hold off,Matlab里面还有一个hold all,就是保留全部的意思,语法用途和hold on相同,但是在以后的版本中会被删除,所以我就不说了。回到上面的hold on和hold off,其实看完官方的解释之后,多多少少都有点懂了,我再来详细解释一下吧。其实这两个语法的作用重点都不是当前的图像,而是之后新添加的图像。 接下来演示一下hold on和hold off单独使用,这边上两段代码演示一下:

        首先是hold on的:

fun = fplot(@(x)(x^2-x*2-1),'r');
hold on;

        接下来是hold off的:

fun = fplot(@(x)(x^2-x*2-1),'b');
hold off;

 

         其实可以看出来,单独使用的话,两个语法是完全没有区别的,hold on和hold off绘制出来的图像都是相同的,但是如果放在一起使用呢?

        接下来就是hold on和hold off放在一起使用:

fun1 = fplot(@(x)(x^2-x*2-1),'r');
hold on;
fun2 = fplot(@(x)(x^2-x*3-1),'b');
hold off;

        我第一个图像展示用的是hold on,第二个图像展示用的是hold off,大家会惊奇的发现,竟然没区别,好吧,这只是演示的,请大家往上面我放出来的Matlab官方解释里面的hold的语法说明看,hold on是保留当前坐标区中的绘图,从而使新添加到坐标区中的绘图不会删除现有绘图;而hold off是将保留状态设置为 off,从而使新添加到坐标区中的绘图清除现有绘图并重置所有的坐标区属性。所以,其实hold语法并不是影响当前图像的展示,而是影响后面继续添加的图像的和之前存在的图像的展示。那如果是下面这段代码,它的图像会是怎么样的呢:

fun1 = fplot(@(x)(x^2-x*2-1),'r');
hold on;
fun2 = fplot(@(x)(x^2-x*3-1),'b');
hold on;
fun3 = fplot(@(x)(x^2-x*4-1),'g');
hold on;

        那么想象一下,出来的图像会是怎么样的呢?没错,就是大家想的这样的:

        为了让大家看清楚,我把第三个图像用绿色的线标明了 ,大家可以看到,如果我一直用hold on语法的话,图像是会一直叠加到第一个图像上,不管你后面再加多少个图像,前面的依然会存在,不会消失,这就是hold on的作用。那如果我把第二个的hold on改成hold off,图像会变成什么样了呢?

fun1 = fplot(@(x)(x^2-x*2-1),'r');
hold on;
fun2 = fplot(@(x)(x^2-x*3-1),'b');
hold off;
fun3 = fplot(@(x)(x^2-x*4-1),'g');
hold on;

 

         没错,大家会发现,只有第三个图像展示出来了,而前两个图像都没了。这就是因为我在第一个图像上使用了hold on,那么程序就会在下一个图像展示的时候,保留第一个图像,而我在第二个图像上使用了hold off,那么程序就不会继续在下一个图像展示的时候保留前两个图像。而这就是hold off的作用。

        大家甚至可以在第一个图像展示的时候使用hold off,这个是没有语法问题的,这个给程序理解的意思就是:噢,我只保留第一个图像,如果后面不继续贴图像的话,我就一直都只有这一个图像,如果后面还贴别的图像的话,那这第一个图像就不用画出来了。

        大家甚至还可以不使用hold语法,图像是可以展示的,但是不使用hold语法的话,程序就是默认hold off,那么多个图像的话,就只会展示最后一个图像了。

        好了,那么今天的番外篇就到此结束了。

总结 

        hold on保留当前坐标区中的绘图,从而使新添加到坐标区中的绘图不会删除现有绘图。

        hold off是将保留状态设置为 off,从而使新添加到坐标区中的绘图清除现有绘图并重置所有的坐标区属性。

最后最后,非常重要!!!!制作不易,复制转载的请标明出处!!!以上都是萌新的自学之路,有不对的地方大佬们请康概指点

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值