天天看點

《MATLAB/Simulink系統仿真超級學習手冊》——2.6 MATLAB的圖形繪制

本節書摘來自異步社群《matlab/simulink系統仿真超級學習手冊》一書中的第2章,第2.6節,作者:matlab技術聯盟 , 石良臣著,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視

matlab/simulink系統仿真超級學習手冊

matlab除了強大的數值分析功能外,還具有友善的繪圖功能。利用matlab豐富的二維、三維圖形函數和多種修飾方法,隻要指定繪圖方式并提供繪圖資料,就可以繪制出理想的圖形。由于matlab的圖形系統是建立在諸如線、面等圖形對象的集合基礎之上,是以使用者可以對任何一個圖形元素進行單獨的修改,而不影響圖形的其他部分。

2.6.1 二維圖形的繪制

1.基本繪圖命名

matlab中最常用的繪圖函數為plot(),它是用于繪制二維曲線的,根據函數輸入參數不同,常用的幾種調用格式如表2-12所示。其中,’option’用來設定曲線屬性的選項,其内容主要包括諸如顔色、線型、标記類型等曲線屬性。’option’選項并不是必需項,若缺少該項,matlab将按系統預設格式統一安排各條曲線的屬性值。

《MATLAB/Simulink系統仿真超級學習手冊》——2.6 MATLAB的圖形繪制

matlab提供了三種’option’選項以供修改:line style線類型,marker symbol标記符号,color顔色。表2-13列出了’option’選項的屬性。

《MATLAB/Simulink系統仿真超級學習手冊》——2.6 MATLAB的圖形繪制

【例2-20】用三種不同的線型、标記符号和顔色分别繪制三條不同相位的正弦曲線。

(1)建立腳本檔案ep2_20.m,輸入下面的繪圖指令,并儲存;

(2)在matlab指令視窗中調用檔案ep2_20,出現如圖2-18所示的繪圖結果。

《MATLAB/Simulink系統仿真超級學習手冊》——2.6 MATLAB的圖形繪制

注意:

(1)用來繪制圖形的資料必須已經存儲在工作空間中,也就是說在執行plot()指令之前,目前工作空間裡必須有可用來繪制圖形的資料;

(2)對應的x軸和y軸的資料長度必須相同;

(3)如果省略選項’option’,系統将按預設的格式繪制曲線;

(4)’option’中的屬性可以多個連用,如選項’--b’表示繪制藍色的虛線;

(5)執行figure指令時,繪圖結果将出現在一個新的視窗中。如圖2-18所示,figure 1顯示的是例2-20繪制的結果,如一般的視窗,它有自己的菜單欄和工具欄;

(6)如果讀者對已繪制的圖形不滿意,提出更具體的要求,如坐标軸範圍,繪制網格等,在matlab指令視窗中輸入下面的指令,figure 1中的圖形會有如圖2-19所示的變化。

《MATLAB/Simulink系統仿真超級學習手冊》——2.6 MATLAB的圖形繪制

2.圖形修飾

有時讀者會對圖形的繪制進行一些修飾,matlab提供了多種圖形函數,用于圖形的修飾。常用的圖形修飾函數名稱及其功能說明如表2-14所示。

《MATLAB/Simulink系統仿真超級學習手冊》——2.6 MATLAB的圖形繪制

【例2-21】對例2-20的圖形進行修飾,實作以下要求:

(1)将圖形的x軸大小範圍限定在[0, 2π]之間,y軸的大小範圍限定在[-1,1]之間;

(2)x、y軸分别标注為“弧度值”、“函數值”;

(3)圖形标題标注為“三個不同相位的正弦曲線”;

(4)添加圖例标注,标注字元分别為y1,y2,y3;

(5)給三條曲線分别添加屬性'-.r*','--mo',':bs';

(6)在三條曲線上分别标注文本y1=sin(t),y2=sin (t - {raise0.5exhbox{$\scriptstyle \pi $}kern-0.1em/kern-0.15emlower0.25exhbox{$\scriptstyle 2$}}),y3= sin (t - pi );

(7)給圖形添加網格。

在文本檔案ep2_20.m的基礎上,添加如下指令,并另存為ep2_21.m。

在matlab指令視窗運作ep2_21.m,運作結果如圖2-20所示。

标注文本。如圖2-20所示,腳本檔案ep2_20.m在執行第一個gtext指令時,需要在圖形視窗figure 1中确定該文本的位置。

figure 1上可以看到一個跟随滑鼠移動的十字形指針,将滑鼠拖動到對應曲線附近,然後單擊滑鼠,字元串y1=sin(t)即可添加到此處。

同理,在執行第二個、第三個gtext指令時,仍需要進行類似的操作,依次将字元串y2=sin (t - {raise0.5exhbox{$\scriptstyle \pi $}kern-0.1em/kern-0.15emlower0.25exhbox{$\scriptstyle 2$}})和y3= sin (t - pi )添加到圖形中,如圖2-21所示。

《MATLAB/Simulink系統仿真超級學習手冊》——2.6 MATLAB的圖形繪制

3.特殊二維曲線繪制

除了标準的二維曲線繪制之外,matlab還提供了多種具有特殊意義的圖形繪制函數,其常用調用格式如表2-15所示。其中,參數x和y分别表示x軸、y軸繪圖資料。

《MATLAB/Simulink系統仿真超級學習手冊》——2.6 MATLAB的圖形繪制

這些特殊圖形繪制函數适用于不同的場合,具有不同的意義。

【例2-22】已知,分别用表2-15中的六種繪圖方式顯示x和y的關系。

編寫腳本檔案,輸入下面的語句,儲存為ep2_22.m。

在matlab指令視窗中運作腳本檔案ep2_22.m,程式運作結果如圖2-22所示。

《MATLAB/Simulink系統仿真超級學習手冊》——2.6 MATLAB的圖形繪制
《MATLAB/Simulink系統仿真超級學習手冊》——2.6 MATLAB的圖形繪制
《MATLAB/Simulink系統仿真超級學習手冊》——2.6 MATLAB的圖形繪制

4.圖形視窗控制

matlab提供了一系列專門的圖形視窗控制函數,通過這些函數,可以建立或者關閉圖形視窗,可以同時打開幾個視窗,也可以在一個視窗内繪制若幹子圖。這些函數及其功能說明如表2-16所示。

《MATLAB/Simulink系統仿真超級學習手冊》——2.6 MATLAB的圖形繪制

(1)第一個繪圖指令(如plot)運作後,将自動建立一個名為figure 1的圖形視窗。這個視窗将被當作目前視窗,接下來的所有繪圖指令(包括繪圖修飾和再一次的plot等指令)均在該圖形視窗中執行,後續繪圖指令會覆寫原圖形或者疊加在原圖形上。

(2)使用subplot指令時,各個繪圖區域以“從左到右、先上後下”的原則來編号。matlab允許每個繪圖區域以不同的坐标系單獨繪制圖形。

【例2-23】取三個不同的t,t1=0:π/20:π,t2=π/2:π/20:3π/2,t3=π:π/20:2π,在同一坐标系下繪制y1=sin(t1), y2=sin (t - {raise0.5exhbox{$\scriptstyle \pi $}kern-0.1em/kern-0.15emlower0.25exhbox{$\scriptstyle 2$}}) ,y3=sin(t3-π),其他修飾效果要求與例2-22相同。

編寫腳本檔案,輸入下面的語句,儲存為ep2_23.m。

在matlab指令視窗中運作腳本檔案ep2_23.m,程式運作結果如圖2-23所示。

注意:腳本檔案ep2_23中,繪制三條曲線的指令與腳本檔案ep2_21的不同之處在于使用了配對的hold on和hold off,然後分别使用了三次plot函數。這與直接使用plot繪制三條曲線效果一緻,隻需這樣寫即可plot(t1,y1,t2,y2,t3,y3,’option’)。如果去掉hold on會得到如圖2-24的結果,隻顯示最後一個plot繪制的結果,也就是y3。

《MATLAB/Simulink系統仿真超級學習手冊》——2.6 MATLAB的圖形繪制

【例2-24】将例2-22中的六幅圖在同一視窗中顯示。

編寫腳本檔案,輸入下面的語句,儲存為ep2_24.m。

在matlab指令視窗中運作腳本檔案ep2_24.m,程式運作結果如圖2-25所示。

《MATLAB/Simulink系統仿真超級學習手冊》——2.6 MATLAB的圖形繪制

2.6.2 三維圖形的繪制

除了常用的二維圖形外,matlab還提供了三維資料的繪制函數,可以在三維空間繪制曲線或曲面。

1.三維曲線的繪制

三維曲線的繪制與二維曲線的繪制方法基本一緻。常用的調用格式如下:

其中,x、y、z所給出的資料分别為x、y、z坐标值,’option’為選項參數,plot3指令中參數的含義與plot指令類似,隻是多了一個z方向的參數。

【例2-25】繪制三維螺旋線。

編寫腳本檔案,輸入下面的語句,儲存為ep2_25.m。

在matlab指令視窗中運作腳本檔案ep2_25.m,程式運作結果如圖2-26所示。

《MATLAB/Simulink系統仿真超級學習手冊》——2.6 MATLAB的圖形繪制

三維曲線修飾與二維圖形的圖形修飾函數類似,但比二維圖形的修飾函數多了一個z軸方向,如axis([xmin,xmax,ymin,ymax,zmin,zmax])。

特殊三維圖形繪制與二維圖形繪制類似,一般其函數名稱為二維圖形繪制名稱後面加一個3,表示三維圖形繪制,如bar3,stem3。

【例2-26】繪制三維火柴杆型螺旋線。

編寫腳本檔案,輸入下面的語句,儲存為ep2_26.m。

在matlab指令視窗中運作腳本檔案ep2_26.m,程式運作結果如圖2-27所示。

《MATLAB/Simulink系統仿真超級學習手冊》——2.6 MATLAB的圖形繪制

2.三維曲面的繪制

三維曲面方程存在兩個自變量x、y和一個因變量z。是以,繪制三維曲面圖形必須先在xy平面上建立網絡坐标,每一個網絡坐标點,和它對應的z坐标所确定的一組三維資料就定義了曲面上的一個點。三維曲面繪制中,常用的3個函數及其功能說明如表2-17所示。

《MATLAB/Simulink系統仿真超級學習手冊》——2.6 MATLAB的圖形繪制

這裡利用執行個體2-27具體說明三維繪圖的機制。

【例2-27】用mesh和surf兩個函數分别繪制z=-x2-y2,x的範圍限定在[-2,2],y的範圍限定在[-2,2]。

編寫腳本檔案,輸入下面的語句,儲存為ep2_27.m。

在matlab指令視窗中運作腳本檔案ep2_27.m,程式運作結果如圖2-28所示。

《MATLAB/Simulink系統仿真超級學習手冊》——2.6 MATLAB的圖形繪制

從腳本檔案ep2_27.m的代碼中,可以看到繪制三維圖形的步驟大緻如下。

(1)在使用繪圖函數mesh(或surf)之前,需要先對資料對(x,y)進行meshgrid處理,進而得到兩個矩陣x和y。這裡meshgrid的作用是,根據資料對(x,y)生成xy網格點坐标資料,例如x=[1,2],y=[3,4],生成矩陣x=[1,2;1,2],y=[3,4;3,4]。

(2)接着,把x和y對應位置的值代入z關于x、y的表達式中,生成矩陣z。

(3)使用三維繪圖函數。mesh函數,就是把每個點[x(i,j),y(i,j),z(i,j)]用直線相連接配接,生成三維網格曲面。surf函數,與mesh函數類似,它是通過小平面連接配接相鄰的點構成三維曲面。

x、y資料之間的步長間隔,決定了繪制出來的三維曲面的網格大小,即精細程度。

2.6.3 plot工具欄

節中提到過plot工具欄,該工具欄友善讀者對工作空間裡的變量進行繪圖,可以省去部分代碼的編寫,但前提是要進行繪圖的資料已存在于工作空間中。

在matlab指令視窗中輸入如圖2-29所示的指令,工作空間中出現了變量t和y,選中工作空間中的t和y,再單擊plot工具欄中的圖檔 30plot繪圖按鈕,出現了如圖2-30所示的繪圖結果。

《MATLAB/Simulink系統仿真超級學習手冊》——2.6 MATLAB的圖形繪制

(1)單擊plot繪圖按鈕,相當于在matlab指令視窗輸入plot指令,讀者可以發現單擊plot繪圖按鈕之後,matlab指令視窗自動輸入了plot指令。

(2)資料選中順序會導緻繪圖結果不同。先選中t再選中y,相當于在matlab指令視窗輸入plot(t,y);而先選中y再選中t,相當于在matlab指令視窗輸入plot(y,t)。

(3)未選中任何資料時,plot工具欄中所有按鈕都如圖2-5所示呈灰色,也就是說必須選中資料才能使用繪圖按鈕。

《MATLAB/Simulink系統仿真超級學習手冊》——2.6 MATLAB的圖形繪制

2.6.4 圖形對象屬性設定

1.圖形對象及其屬性

節和2.6.2節中提及到,任何一個圖形元素,讀者都可以對其進行單獨修改,而不影響圖形的其他部分。這種獨立的圖形元素稱為圖形對象,圖形對象的修改通過調整其屬性來完成。

表2-18列出了matlab中常用的圖形對象及其主要屬性。

《MATLAB/Simulink系統仿真超級學習手冊》——2.6 MATLAB的圖形繪制

當調用plot指令繪制二維曲線時,matlab的執行過程大緻如下:

(1)使用figure指令,在root根對象上生成一個figure圖形視窗對象;

(2)使用axis指令,在圖形視窗内生成一個繪圖區域(axis對象);

(3)最後用line指令在axis指定的區域内繪制線條(line對象)。

是以,matlab所繪制的圖形是由基本的圖形對象組合而成的,可以通過改變圖形對象的屬性來設定所繪制的圖形,以滿足不同的繪圖需求。

2.圖形可視編輯工具

matlab執行繪圖函數後,将出現一個圖形視窗。該視窗除了簡單的顯示圖形功能外,其本身就是一個功能強大的圖形可視編輯工具,可實作的功能主要如下:

(1)通用的圖形檔案管理功能,如儲存、打開、建立圖形檔案等;

(2)通用的圖形效果編輯功能,如圖形放大、縮小、旋轉、對齊等;

(3)圖形對象插入功能,如插入坐标軸名稱、圖形标題、圖例标注、線段、文字等;

(4)獨立這是視窗中各圖形對象屬性功能,如線段的類型、顔色、粗細等。

圖形對象插入功能可通過選擇菜單指令insert後,再選擇相應的對象選項來完成,如圖2-31所示。該功能與節講的圖形修飾函數一緻。如,菜單指令insert→title與函數title(‘string’)功能一緻,菜單指令insert→legend與函數legend(‘string1’,’string,…)功能一緻。

顯然,使用菜單指令比在matlab指令視窗輸入函數指令要簡便的多,且更具可視性。

《MATLAB/Simulink系統仿真超級學習手冊》——2.6 MATLAB的圖形繪制

圖形對象屬性的設定可以通過以下兩種方法實作:

(1)選擇菜單指令view→property editor,如圖2-32所示,在圖形下方出現了一個property editor屬性編輯視窗;

《MATLAB/Simulink系統仿真超級學習手冊》——2.6 MATLAB的圖形繪制

(2)選擇菜單指令tools→edit plot(或者單擊工具欄中的圖檔 25edit plot按鈕),如圖2-33所示,滑鼠移動到需要修改的對象上輕按兩下左鍵,或者選中後再單擊右鍵,在彈出的菜單中選擇show properties editor以顯示屬性編輯視窗。

《MATLAB/Simulink系統仿真超級學習手冊》——2.6 MATLAB的圖形繪制

這兩種方法都可以使圖檔 23 edit plot按鈕高亮化,同時圖形視窗下方會出現屬性編輯視窗。在此屬性視窗下,可以進行坐标、線段、标題等項目的顔色、字型、網格、範圍的設定。

選中一個對象後,再單擊右下角的more properties更多屬性按鈕,将出現該對象更加詳細的屬性編輯視窗,如圖2-34所示。

《MATLAB/Simulink系統仿真超級學習手冊》——2.6 MATLAB的圖形繪制
《MATLAB/Simulink系統仿真超級學習手冊》——2.6 MATLAB的圖形繪制
《MATLAB/Simulink系統仿真超級學習手冊》——2.6 MATLAB的圖形繪制

繼續閱讀