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/zh-hk/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

發表回復

登錄後才能評論