Matlab 中 hold on 和 hold off 的使用

一、概述

在 Matlab 中绘制图形时,有时需要在一张图上同时绘制多个函数曲线。此时,我们可以使用 hold on 和 hold off 指令来控制 Matlab 图像窗口中的图形绘制。

二、hold on 和 hold off 的基础语法

hold on和hold off 指令可用来控制曲线的重叠,以便在同一个坐标系下同时绘制多个曲线。

% 比如绘制sin和cos函数
x = 0:0.1:pi;
y1 = sin(x);
y2 = cos(x);

% hold on 命令
plot(x,y1);
hold on;
plot(x,y2);
hold off;%使用 hold off 恢复正常绘图状态

上述代码中,hold on 命令会启用 Matlab 图像窗口的隐藏功能,以允许用户在同一张图中绘制多张图,并且 hold off 命令会将窗口绘图设置为正常状态,以便用户可以在此后的图形中绘制单个线条。

三、hold 的其他参数

因为在控制曲线绘制时,使用 hold on 和 hold off 命令会改变图形对象的状态,所以在绘制图形时,有些用户不会使用 hold off 命令。但是,为保证图形对象的状态不会进一步改变,也可以使用其他 hold 命令参数。

例如:当把 nextplot 属性设置为 add 时,图形中的所有任何绘图都将覆盖到前一个绘图上,从而创建多重图层效果。

 x = [0:pi/100:2*pi];
y1 = sin(x);
y2 = cos(x);

plot(x,y1);
set(gca,'nextplot','add')
plot(x,y2)
set(gca,'nextplot','replace')

上述例子中,使用 set 命令设置 nextplot 属性,将“add”作为其参数输入,这样会持续使用 hold on 的功能在图像窗口画布上绘制图表。

四、hold 区分 Figure 和 Axes 句柄

注意:hold 命令会应用于画图区域的 Figure 和 Axes 对象。虽然在许多情况下, Figure 和 Axes 对象是相同(只有一个 Axes 子对象)的,但在其他情况下,它们是不同的。

如果指定 Axes 对象的父级 Figure 对象在 hold 状态下被保存,那么后续的 Plot 函数可以通过新 Axes 对象使用 hold 命令,从而影响 Figure 对象的现有 Axes 对象。此时,如果您想让某个图表返回到非 hold 状态,请重置该图表的 Axes 对象。

注意,此时 reset 所有的 Axes,而不仅仅是当前 Axes 对象。

% 一个清空reset的例子
x = [0:pi/100:2*pi];
y1 = sin(x);
y2 = cos(x);

figure; 
plot(x,y1);
set(gca,'nextplot','add')
plot(x,y2)

figure;
plot(x,y1);
set(gca,'nextplot','add')
plot(x,y2)
hold on;
plot(x,cos(x),'r--')
hold off;

% Create a new figure
figure;
plot(x,y1);
% This axes is the current axes, which means the next plot command will
% write on it unless hold is active
hold on;
plot(x,cos(x),'r--')
hold(gca,'on')
% This plot will write on the same axes
plot(x,cos(x).^2,'g:') 
hold off;

五、优化曲线的性能和外观

hold 命令可用于优化曲线的性能和外观,例如在多次更新曲线时冻结 Y 轴限制,以避免自动缩放,从而产生可见的闪烁。

 % 追踪 sine 函数的振幅与相位
ax = gca;
hold(ax,'on')
for k = 1:50
   y = sin(k*x + rand*pi/2);
   plot(ax,x,y,'k','LineWidth',1.5)
   ax.YLim = [min(y) max(y)];
   pause(0.1)
end
hold(ax,'off')

六、小结

在 Matlab 中,hold on 和 hold off 命令可用于控制曲线的绘制。在使用这些命令时,请始终注意是否需要设置 Figure 和 Axes 对象的状态。

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/154444.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-11-16 14:11
下一篇 2024-11-16 14:11

相关推荐

  • 用Matlab绘制正多边形

    在这篇文章中,我们将探讨如何使用Matlab绘制正多边形。我们将从以下几个方面进行阐述: 一、绘制正三角形 正三角形是最简单的正多边形之一。要绘制一个正三角形,我们可以使用Matl…

    编程 2025-04-29
  • Matlab中addpath的使用方法

    addpath函数是Matlab中的一个非常常用的函数,它可以在Matlab环境中增加一个或者多个文件夹的路径,使得Matlab可以在需要时自动搜索到这些文件夹中的函数。因此,学会…

    编程 2025-04-29
  • Matlab二值图像全面解析

    本文将全面介绍Matlab二值图像的相关知识,包括二值图像的基本原理、如何对二值图像进行处理、如何从二值图像中提取信息等等。通过本文的学习,你将能够掌握Matlab二值图像的基本操…

    编程 2025-04-28
  • Matlab quit函数

    Matlab是数学软件领域比较流行的软件之一,quit函数是Matlab中一个十分重要的函数,可以在Matlab中用来退出当前的进程或者整个Matlab的进程。下面我们将从多个方面…

    编程 2025-04-27
  • 以on中的o发音相同的单词

    解答:本文将从发音相同的单词的定义、使用场景和区别以及常见的代码示例三个方面对以on中的o发音相同的单词进行详细阐述。 一、定义和使用场景 发音相同的单词指的是在音标上读音相同的单…

    编程 2025-04-27
  • Matlab局部放大——图像处理的神器

    一、什么是Matlab局部放大? Matlab是一个高级技术计算语言和交互式环境,常被用来进行科学计算和工程设计等领域的计算和可视化操作。局部放大指对一张图像或视频中感兴趣的区域进…

    编程 2025-04-25
  • Matlab Break详解

    一、break概述 在MATLAB程序中,break是一个控制流语句,用于跳出当前的循环语句。如果在for或while循环中,遇到break语句后,就会直接中断当前循环,跳出循环体…

    编程 2025-04-25
  • Matlab &&:全能编程开发工程师的得力工具

    一、Matlab &&简介 Matlab是一个数学计算软件,其名字来源于“矩阵实验室”(Matrix Laboratory), 它主要用于算法开发、数据可视化以及数…

    编程 2025-04-25
  • matlab中subs的用法

    一、简介 在matlab中,subs函数可以实现对数学表达式的替换,它可以方便地将符号表达式中的变量替换成给定值或表达式,以求得新的表达式或数值结果,具有很高的实用价值。 二、替换…

    编程 2025-04-25
  • 详解Matlab的mapminmax函数

    一、是什么以及它的作用 Matlab的mapminmax函数是一种数据归一化和标准化的工具。归一化是一种将数据缩放到 [0,1] 范围内的方法。标准化是一种将数据缩放到零均值和单位…

    编程 2025-04-25

发表回复

登录后才能评论