hold_was_on = ishold??

来源:互联网 发布:硅藻土吸水地垫 知乎 编辑:程序博客网 时间:2024/05/29 15:20
在matlab里面画图的时候,有两种模式:(1)增加模式:保持现有的图,继续画;可以使用hold on命令,进入这种模式;(2)替换模式:清空现有的图,重新画;可以使用hold off命令,进入这种模式。如果是hold on状态,你先画一条横线,再画一条竖线,那么最终的结果是一横一竖两条线(横线之后增加了竖线);如果是hold off状态,你先画一条横线,再画一条竖线,那么最终的结果是一条竖线(竖线替换了横线)。
line(corners(1,:), corners(2,:), varargin{:}); %line([X1 X2 X3...],[Y1 Y2 Y3...],S); %点A(X1,Y1)和点B(X2 Y2)之间,(X2,Y2)和(X3 Y3)之间画一条直线...S为其它属性 % patch(corners(1,:), corners(2,:), 'y', ...%       'FaceAlpha',0, 'LineWidth',1.5, varargin{:});center = mean(corners(:,1:4),2); %取四个顶点x坐标和y坐标各自的平均值作为center的坐标hold_was_on = ishold; <pre id="best-content-1465705295" class="best-text mb-10" style="min-height: 55px;"><span style="font-size:18px;"></span><pre name="code" class="plain">%在画图之前,检测并记住hold状态,保存在变量hold_was_on之中。其中ishold是一个内置函数,可以返回当前的hold状态。
hold on; plot(center(1),center(2),varargin{:}); %画出中心点if (~hold_was_on) hold off; end %在画图之后,根据之前记录的结果,恢复之前的hold状态。

在新的plot之前,使用hold on;命令,意思是在原有的图上继续画。但是这样做,太简单粗暴了,改变了画图的方式。如果有一天,你的同事或者同学拿到了你的代码,并且要进行修改。在没有细看的情况下,他把你这段代码插入到一段需要保持hold off状态的代码之中,就难免会发生错误。因此,最好能够在画图时,保持hold状态。因此,在画图之前,检测并记住hold状态,保存在变量hold_was_on之中。hold_was_on = ishold;其中ishold是一个内置函数,可以返回当前的hold状态。在画图之后,根据之前记录的结果,恢复之前的hold状态。if (~hold_was_on) hold off; end
                                             
0 0