顯示具有 Chap9 標籤的文章。 顯示所有文章
顯示具有 Chap9 標籤的文章。 顯示所有文章

11/06/2006

第九章 繪圖

一圖勝萬語,在工程上有圖則一目了然,無圖搭配則如隔鞋搔癢,很難得窺得全貌,這也是一般作業偏重於圖說的原因。在MATLAB中,繪圖指令是其重要的功能,利用程式與繪圖指令結合,可以將結果以圖形顯現,有助於過程之瞭解及結果之分析,這項工作在機動學之分析尤為重要。本章將以實例解說,以配合實際之應用。

繪圖的目的若僅為表現資料的走向或變化趨勢,則可採用不同的觀察角度,使資料的內涵更能彰顯。就圖之特性分類,可包括塊狀圖、柱狀圖、點示圖、線示圖等,而就其空間而言,又可分為2D或3D圖,前者取其實用性,後者取其美觀性。

一些繪圖之基本原則將在本節中討論。簡單的繪圖只需幾個指令即可達成,若要圖樣有複雜的外觀,則必須瞭解指令中之參數設定。其中包括線條之顏色、粗細、形狀及組成的內涵。執行時並不一定要設定所有的參數。由於有預設值,不設定也可使繪圖指令順利執行。本節雖不能詳盡說明所有的功能,但至少可釐清一些繪圖的概念,並由諸多範例中得到所需之結果。其他報告用圖表,有時必須採用細緻的描圖方式,並確定圖的位置、型式及顏色。這些參數將在後面章節逐一介紹。

MATLAB之繪圖功能強,並提供相當多的繪圖指令及繪圖技巧,可以將資料以不同圖形顯現。在學習繪圖過程中常用的方式有兩種,其一是利用繪圖工具,以交談的方式產生所需的的圖形;其二是利用各種繪圖指令,配合輸入之資料進行繪圖。前者有特定的工具可以修飾圖形外觀;後者則直接由指令進行繪圖。有時候,兩者並用也可以產生複雜而美觀的圖面,且不必費太多心思在程式上。

繪圖之一般程序可歸納如下:

  1. 準備資料:例如
    x=0:2:10;
    y1=x.^2; y2=sqrt(x);

  2. 選擇適當圖形視窗及繪製區間:
    figure(1)
    subplot(2,2,1)

  3. 呼叫基本繪圖函數:
    h=plot(x,y1,x,y2)

  4. 選擇曲線型式及標記特性:
    set(h, 'LineWidth',2,{'LineStyle'},{'--';':';'-.'})
    set(h, {'Color'},{'r';'g';'b'})

  5. 設定軸範圍及網線:
    axis([0 12 0 10]);
    grid on/off;

  6. 加註座標名稱、圖標及文字:
    xlabel('No. of Counts');
    ylabel('Response')
    legend(h, 'First','Last')
    title('Test of the Graph')
    text(x,y,'Say Hello to Everyone')

  7. 輸出圖形:
    print -depsc -tiff -r200 myplot

9.1 使用PLOTTOOLS繪圖工具

(編譯及圖示摘自mathworks.com)
繪圖工具是一個新的功能,開始時可以先產生一些基本資料,例如:求一個y=x3之函數。首先定義x之範圍,然後依一般操作方式求得y值:


x=-1:.1:1;
y=x.^3;

有這些資料後,即可使用繪圖工具。繪圖時,過程中所需之各項資料也可以在事後增加,目前僅是舉例說明。在資料具備後,即可下達繪圖指令:

>>plottools

此工具顯示如圖9.1。




大體上,plottools所提供的整合功能可以分為許多區。其中A區為圖形存放之所在。其出現必須先將滑鼠指向F區,並將剛才所創立的x與y兩項資料選出、按右鍵,由其突顯之菜單中選擇plot(x,y)這一個功能即可顯示。

其他部份尚有CDEFG等區,這些區之資訊旨在改變A的圖面,使圖形符合期望的外觀。B區為x與y軸之資料來源;D區為繪出線之型式;C區則代表軸及所繪各曲線之資料,只要按axes即可出現座標軸之名稱及其區間之型式,按其他曲線代表即可在圖上顯示對應之曲線。

G區內則提供許多箭號、文字標籤、加線、加圖形等等的項目,這些可以直接加在圖面上,以美化圖面。

MATLAB在每張圖出現時,也會出現一特定的圖示窗。其上也有類似的工具符號如箭號、線段、文字及標籤等可以作最後添加。利用plottools所產生的視窗其實也是圖視窗之一,只是額外增加一些輔助功能而已。這些輔助功能包括'figurepalette'、 'plotbrowser'及 'propertyeditor'等三種特性。



E區則為分圖之功能,可以在同一張圖內分割圖面,使其容納多圖。這種分圖包括2D與3D均可處理。最後在H區可以有些輔助指令處理檔案之儲存等工作。

在進行繪圖工具之操作中,指令窗也會配合增加的項目記述對應之指令。將這些指令累總紀錄可以存在敘述檔中,未來利用指令窗可將原來之需求重現。

若要增加圖重疊於前圖時,可以在C區之底下按'Add Data',即會有如下之視窗出現,並可選擇所需加入之資料。此資料可直接在菜單內增加,按OK後即會產生疊入圖形。



有關plottools介紹可參考Matlab示範指令:

>> playbackdemo('PlotTools_viewlet_swf')

9.2 繪圖指令(1)

直線為繪圖之基礎,任何曲線均可由短直線構成,而適當地組合線群可以形成複雜的圖形。畫線指令line可以完成這項任務。繪線必須有起始點及終止點,但若有連續的點,採用矩陣表示時,則會自動連線,繪出整個圖形。故若使用line指令,應可以利用點群之座標,一筆畫繪出需要的圖形。Line繪線指令之語法如下:


h=line(X,Y)

等號之左側h為此線之握把,雖然實際應用時可有可無,但在繪圖過程中可作為指認該線之用,每條線均有它的代號,正如每個人均有姓名一樣,利用其代號可以指出要更改屬性之對象。此線用其座標(X,Y)表示繪線之兩端點。通常用行矩陣代表,其大小必須相同。同時繪好幾條線時,可以以多行對應表示,每一行代表一線。

實例1.1


繪出A(2,3)、B(0,5)兩點之連線以及D(5,3)、 E(2,5)兩點之連線。
做法:先繪AB線,再繪CD線。

>>line([2 0]',[3 5]') %線1:向量[2 0]'代表X座標,向量[3 5]'代表Y座標
>>line([5 2]',[3 5]') %線2:向量[5 2]'代表X座標,向量[3 5]'代表Y座標



另一個方法是將X與Y分成2 x 2之矩陣,第一行代表第一條(AB)直線;第二行代表第二條(DE)直線。因此,只要一個指令就可:

>>line([2 5; 0 2],[3 3;5 5]) %以行向代表線別,第一行為線1;第二行為線2



其結果相同,但線的顏色不同。後者它會自動因為線的數目分別給予不同顏色。
繪製曲線時,可以視為一組直線線段組成,只要線段切分得過細,亦可得到平滑的曲線。

9.2.1 LINE畫線法(2)

實例1.2:


使用line繪出y1=x²及y2=x³之函數,其自變數X位於x=[1, 5]區間。

做法:先將x=[1,5]之區間分成50等分。令其成為行向量,並求對應之點。

x=linspace(1,5,50);
y1=line(x,x.^2)
y2=line(x,x.^3)
grid on
---------------------------
y1 = 0.0027
y2 = 153.0027





若要兩函數同時出現在一個指令上也行,只要安排成行向量,每一行代表一條曲線如下:

>> y=line([x',x'],[x'.^2,x'.^3])
y =
0.0029
153.0029


若等號左邊有給予變數時,其變數儲有握把值,此握把值由機器自定。每次執行之結果可能不一樣。

由上述指令之應用可知,只要資料為一維向量,無論該資料屬行向量或列向量,其結果相同。若資料為一方形矩陣,則繪圖時是以行向量為畫線單元,多行時會同時繪出多線,而且每修線會自動繪上不同顏色。

9.2.1 LINE畫線法(3)

實例1.3


若有一函數為y=x³,其x之範圍為x=[1 3 5 7; 2 4 6 8]

做法:由於x之值域採用2x4的矩陣,原則上利用line函數時,每行為獨立的線段,故雖然同一指令下,它仍視為四條曲線,有四個握把:

>> x=[1 3 5 7;2 4 6 8]
>>h=line(x,x.^3)
x =
1 3 5 7
2 4 6 8
h =
0.0032
153.0032
154.0032
155.0032



上例若將x及y座標矩陣移置,即line(x',y'),其結果將形成兩條線,即如圖9.7所示。

y=line(x',x'.^3)

y =
0.0034
153.0034


9.2.1 LINE畫線法(4)

多點連線時,參數可以矩陣表示,但每行代表一線,亦可採用多行,形成方形矩陣,下面為其一例:

實例1.4


有一物體斜向抛向空中再落地。初始速度設為V,水平角度為θ,試求其全程經歷之時間(Elapsed_time)、高度變化(h)及垂向速度(V(t))變化。

做法:先求物體垂向速度、高度及經歷時間。後者為物體達到最高點之兩倍,其公式如下:









程式:

v0=60; %Initial velocity, m/s
theta=60; %Projection angle, degrees
gty=9.81; %gravity acceleration
sintheta=sind(theta);
elapsed_time=2*v0/gty*sintheta; %the travel time
t=linspace(0,elapsed_time,50);
h=v0*t*sintheta-0.5*gty*t.^2;
v=v0*sintheta-gty*t;
bar(t',v')
line(t',h')
line([0,elapsed_time],[0,0])
xlabel('Elapsed time, seconds')
ylabel('Height(m) & Velocity(m/s)')


執行結果:實線部份為速度,單線為高度線。



實例1.5



作上述各高度點與原點之連線。

做法:利用line(x,y)畫線指令,其[x,y]為連線上各點之座標。而且為使連線一再經過原點,必須將兩點之對應座標值穿插其間。唯一的辦法是將[x,y]分別做成二列矩陣,第一列屬於高點之座標,第二列屬於底點(原點)之座標。然後用x(:)與y(:)串聯起來。記得這樣做是將矩陣變成單行矩陣,其連接方式是一行接一行,因而可以達到間插點的效果。

程式內容:(t與h沿用上題)

x=[t;zeros(size(t))];y=[h;zeros(size(h))];
line(x(:),y(:))


執行結果:





線段指令亦可應用於三維的點線。其語法如下:

h=line(X,Y,Z)
h=line(X,Y,Z,'PropertyName',PropertyValue,...)


繪線指令係繪製直線線段,其功能與一般之plot()指令大同小異,只是後者加上複雜的座標功能。若要純繪圖,則使用line()指令較為方便,而且同一個圖可以執行多次線段之繪製,plot則是一次一圖,要繪重疊圖必須配合hold on指令。

但是line()指令沒有plot()之簡易設定功能,所以有些基本參數需依其參數名稱設定。每次繪線,同樣亦可有握把設定之功能,若不設定,亦可使用gca擷取,但僅限於最近繪製之線段。

線段屬性包括顏色、寬度、線型、點標等等。一般參數之前三項為資料行,可以繪製二維或三維線段,亦可用如下格式輸入,但必須成雙:

line('XData',x,'YData',y,'ZData',z)


MATLAB 繪製線段時係使用預設顏色,而且自動依序分配,故在矩陣資料之繪線時,無法控制其顏色。若X與Y是同長度之矩陣,則係以行為單位,每對應行繪製一線。若要設定其參數值,則參數名稱與輸入值應成對,如:

line(X,Y,Z,'Color','r','LineWidth',4)


其他詳細之應用我們將在後面章節會陸續用到,屆時再詳加介紹。

9.2.2 PLOT繪圖指令

MATLAB 的plot()與line()是基本的繪圖指令,可以將一組(x, y) 之對應座標繪於圖上,x與 y可分別為行矩陣或列矩陣,由此進行描點作圖,例如:


% Demo_1 Draw curves using plot
theta=(1:50)*(2*pi)/50; %2π之區間分成50等分
plot(theta,cos(theta));
xlabel('Angle(x), radians'); %水平座標名稱
ylabel('cos(x)'); %垂直座標名稱
grid on; %打開格線模式





上面使用plot()指令繪出圖9.10,但使用line()也有同樣的效果。如下面之程式:

% Demo_2 Draw curves using plot
theta=(1:50)*(2*pi)/50; %2π之區間分成50等分
line(theta,cos(theta)); %使用line指令
xlabel('Angle(x), radians'); %水平座標名稱
ylabel('cos(x)'); %垂直座標名稱
grid on; %打開格線模式


除使用line()指令外,與前面略有不同的是,在Demo_2之例中,另外使用linspace(0, 2*pi,50)指令亦可產生 0 至2π弧度範圍分為50等分點的功能。這個指令若不特別說明等分量,其預設值為100。使用此指令時,特別注意linspace()中,其'lin' 後面沒有'e'。

此外座標名稱之標示可用xlabel()與ylabel()兩指令,其名稱內容必須使用' '括起來,此部份亦可用文字資料矩陣取代。

plot()與line()不同的地方是前者可以同時繪製多重曲線面上的點進行描點作圖,而且可以賦予不同顏色與屬性。line()指令雖也有相同的功能,但其屬性之設定必須利用set()指令相輔助。例如:



% Demo_3 Draw curves using plot
x=linspace(0,2*pi,50); %2π之區間分成50等分
plot(x,x.*x,x,x.^3,x,x); %使用plot指令
xlabel('Angle(x), radians'); %水平座標名稱
ylabel('y= x^2, x^3, x'); %垂直座標名稱
grid on; %打開格線模式

9.3 繪圖參數的設定

每人都要有一個名字或身份證號碼,除容易呼叫指定外,在眾多圖子圖孫中可以分出你我。所以同時繪製許多圖時,都必須給予一個握把,以為識別。

9.3.1圖的握把(handler)


握把的語法如下:

h = plot(...)

此處左邊之h即為所給之握把名稱。經過這樣命名之後,h會被指定一個值,其內容如何只是與MATLAB內部作業有關,對於程式而言,只要認定h就代表上述指令執行後所繪之圖。其後,在設定參數值時,可以引用呼叫。握把圖之應用是MATLAB之特點,利用握把之定義可以指定圖中之任何物件,包括座標參數及所繪製曲線之屬性及未來選單或特定之事件之處理等。後者讀者可另參考相關之入門書籍,本文不另敘述。

9.3.2 線段屬性之設定



圖9.12所示為利用plot()指令同時繪製三條曲線之情形。若沒有任何添加其他顏色屬性參數,程式會自動給予不同內定的顏色。其格式如下:

plot(x, y, 'CLM')

'CLM' 為一字串,其中C、L、M分別代表曲線顏色、曲線型式(Line Styles)及資料點之點標(Markers),其相關值如下表所示。

顏色代碼表









代碼顏色
r紅色
g綠色
b藍色
c青色
m紫色
y黃色
k黑色
w白色

線型代碼表





代碼 線型
- 實線
--折線
:虛線
-.折虛線

標記型碼表














代碼標記名稱
實線
o圖點
*星號
.點形
x叉形
'square'|s方型
'diamond'或d菱形
^向上三角形
v向下三角形
>右向三角形
<左向三角形
'pentagram'或p星形
'hexagram'或h六角形


舉例,若將上圖之三條曲線顏色依序為黑、紅、藍;線型分別為實線、虛線及點虛線;而點標分別為圓點、叉點及加號時,其程式可改善如下,繪出則如圖9.12。


% Demo_4 Draw curves using plot
x=linspace(0,2*pi,50);     %2π之區間分成50等分
plot(x,x.*x,x,x.^3,x,x); %使用line指令
xlabel('Angle(x), radians'); %水平座標名稱
ylabel('y= x^2, x^3, x'); %垂直座標名稱




Demo_4之程式中,CLM之代碼前後順序可以對調,且若不加顏色碼,程式會以預設值設定顏色。點標碼若無法找到適當的對應,亦可直接用英文字代表,如菱形以diamond(或);方形以square(或);星號以star(或)是,可參考列表。

到底圖的握把有什麼好處?


有些人可能心裡會狐疑一會兒,為什麼圖繪出之後,還要給它一個握把。到底有何用處?事實上這個握把之功能多多,正如每一個人都要命一個名字一樣或給一個身份證號碼,在以後處理時比較容易辨認。下面之說明可以澄清這個用途:

9.3.3單一參數之處理

Plot()這個指令如果內容少到僅利剩有一個參數時,如y,仍然可以據此繪圖,只是此時之對應x變為y值之對應序號。例如:


% Demo_5 Draw curves using plot(y)
x=linspace(0,10,50); %2π之區間分成50等分
y=x.*x;
plot(y,'k-o');
xlabel('order'); %水平座標名稱
ylabel('y= x'); %垂直座標名稱
grid on; %打開格線模式





由此可知,若y 為一向量,則plot(y) 指令執行之結果應下面之指令相同:

plot(1:length(y), y)


實際上若將上述之y值安排為行距陣,仍然可以冋時繪出三條線,只是此時無法設定個別曲線之屬性。其例如Demo_6,結果如圖9.14。


% Demo_6 Draw curves using plot(y)
x=linspace(0,2*pi,50)'; %2π之區間分成50等分
y=[sin(x) cos(x) sin(x)+cos(x)];%造成三行資料
plot(x,y);
xlabel('x, radians'); %水平座標名稱
ylabel('y=sin(x), cos(x), sinx(x)+cos(x)'); %垂直座標






利用plot()繪出多條曲線於一圖,除利用上述各種方法外,亦可利用多次執行plot()的方法。如此可以個別設定線段之屬性。只是plot()每執行一次,會將先前執行之圖形去除,因此必須在執行plot()指令之前後,宣告hold 這個指令。hold on 表示可以重疊繪圖,hold off(預設值)則表示不可重疊繪圖。繪圖時可以善用這一個指令,以便能將多條曲線繪製於同一圖上(圖9.15)。
plot()這個指令實際上也可以處理複數的世界。若某數列為複數,則利用此繪圖指令時,其實數部份將繪製於x軸,而對應之虛數部份則繪於y軸。設Y為複數,則plot(Y)之結果與plot(real(Y), imag(Y))相同。實例程式如Demo_7,其結果如圖9.15。


% Demo_7 Draw curves using complex vector
x=linspace(0,2*pi,50)'; %2π之區間分成50等分
y=sin(x)+i*cos(x); %產生複數系列
plot(y);
xlabel('x=sin(x)'); %水平座標名稱
ylabel('y=cos(x)'); %垂直座標
axis equal



9.3.4參數值之擷取與設定

表2. 設定指令之功能及應用







指令名稱說明
get & set回應現行之參數值(get)或設定各種參數值(set)
gcf, gca回應現行圖或座標軸之握把碼(或握把handle)
axis設定直接影響執行中之軸物件屬性
axes依特定物性產生新座標物件(非 axis)


圖是以座標軸為骨架,故在繪圖的過程中,座標軸之相關參數均有預定值,這些參數也可以在下指令時同時設定或事後更改。因此,在下指令時,若無特殊的要求,MATLAB通常直接自動使用預設值。表2 所述為部份可供擷取或設定的常用指令。

其中之get()及set()為改變參數值可用設定指令,其格式如下:

set(sys,'Property1',Value1,'Property2',Value2,...)
a= get(h,'DefaultObjectTypePropertyName')


前者set(sys,'Property1',Value1) 是在設定某參數之特定值,故其參數之名稱及欲設定之值必須一前一後成對。其前面有一個是代表處理對象裝置、圖形或圖軸座標系之握把碼。指令get(h,'ProperyName')也一樣,但由於是擷取該參數之內容,所以必須將其放在另一變數內。

若同一視窗中有若干圖,則所謂現行圖應指才產生或才被滑鼠指定之圖。這裡gcf與gca為兩個直接擷取圖形握把及座標握把之兩參數,因此即使plot()時沒有設定握把,也可以利用這兩個參數將內藏之握把碼取出,作為指定圖形及座標軸設定之用。

指令axis則有多重之應用,最主要是設定兩座標軸之範圍,其值是一個具有四個元素之列矩陣,前兩者分別為X軸之最小及最大值;後者為Y軸之最小與最大值。


axis([xmin xmax ymin ymax])


此外,axis之指令可以在後面加下面之中任一個參數:

axis auto/manual/tight/fill/ij/xy/equal/image/square/off/on


有關這些參數之應用,讀者可以利用help進行查尋。其中之axis on/off 決定是要座標軸;axis equal則是將水平與垂直座標之單位設為一致,因此繪出之圓才不會變成橢圓,這是一個相當實用的指令。至於axes指令則與axis之功能完全不同,axes旨在創出另一組新的繪圖軸物件,詳情可參考手冊。

9.3.5線體參數設定

除利用前述之線碼以變換線條之顏色、點標及線型外,一般繪線仍可提供不同參數,以變更線條之粗細或點標之顏色,這些又稱為線之屬性,立即之屬性可以利用下列指令得到:

get(gcf) 或 get(gca)

就曲線之外形及顏色為例,則可用表9.3所列之參數設定之:

表9.3 繪線參數之功能









參數名稱*參數值(例)備註
LineWidth(0.5) 標示線寬(點數)
LineStyle-, --, :, -., none (-)標示線型
Marker'd+x*'標示點標形狀
MarkerEdgeColor'k'標示點標邊線之顏色(參考表1)
MarkerFaceColor'g'標示點標內部之顏色(參考表1)
MarkerSize(6)點標之大小(點數)

*參數名稱在plot()內使用時,必須用 ' ' 號括起來,其後面則填以適當值。參數值若為色碼時,亦須用 ' ' 號括起來。其內容可參考表1。

利用plot()繪圖時,可將上述參數置入括號之參數項中。執行時,其順序前後並不重要,但必須成對。Demo_8之程式為設定線條粗細為4,點標線為黑色,內填黃色,大小為15。其結果如圖9.16。


%Demo_8 Draw the size & color of marker
x = -pi:pi/10:pi;
y = sin(x)+ sin(x);
plot(x,y,'--rd','LineWidth',4,...
'MarkerEdgeColor','k',...
'MarkerFaceColor','y',...
'MarkerSize',15);





執行繪圖程式時,並若未事先參數設定,則仍然可以利用表9.3所列之指令進行事後設定。這種事後設定之功能可供程序控制,利用顏色、形狀之變化,顯示程式之進度。程式demo_8x是一個設定參數之例子,其中用到pause 指令,是讓程式暫停的意思,必須按任何鍵才能繼續。圖9.17是繪圖指令繪出函數後,再利用set()設定點標之大小及線型而呈現為圖9.18。


%Demo_8x Parameter settings
t = 0:0.2:4*pi;
y = exp(-t/6).*cos(t);
h = plot(t, y); % h 為曲線的握把
pause;
set(h, 'MarkerSize', 25); % 線標的大小改成25
set(h, 'linewidth', 2); % 曲線寬度改為2
set(h, 'linestyle', ':'); % 設為虛線
set(h, 'Marker', 'd'); % 點標改成變形







除設最大與最小值外,各座標軸之區間亦可自行設定。此時必須利用'XTick'與'XTickLabel'這兩個參數,前者是要設定之區間值,以一列矩陣代表,後者為文字串之對應,其大小兩者應相同。由於後者為文字串陣列,故必須用大括號{}括起來。程式demo_9是其例,圖9.19為其結果。注意僅有X軸受影響,縱軸係MATLAB自動設定。若要自行設定,則可設立其對應之參數:'YTick'與'YTickLabel'。

%Demo_9 Change ticks of x-axis
x = -180:10:180;
y = sin(x*pi/180);
plot(x,y) %先行繪圖
set(gca,'XTick',-180:90:180); %重設目前X軸參數之範圍
%重設X軸之內標
set(gca,'XTickLabel',{'-180','-90','0','90','180'})
grid on;


9.3.6增加標題與文字

在圖中可以增加任何文字包括圖標題、座標標題及其他圖上之文字。其指令如表9.4。程式demo_10為利用這些指令建立一個華氏溫度轉換為攝氏之溫度圖,其中利用xlabel()及ylabel()設定其名稱,然後以title()設定其圖名。在本例中,順便應用前節所述,以set()改變兩座標軸之區間。同理,現行軸握把碼由gca取得。圖9.20則為其執行之結果。

表9.4 文字與標題指令






指令名稱說明備註
title('string')圖形名稱之設定
xlabel('string'), ylabel('string'), zlabel('string') 三垂直座標軸之名稱設定
text(x,y,'string'), text(x,y,z,'string')圖中座標(x,y)處置文字串可為向量



%Demo_10 Adding titles to a graph
x =32:2:212; %華氏溫度
y=(x-32)/1.8; %攝氏溫度
plot(x,y,'r') %先行繪圖
set(gca,'XTick',0:45:225); %重設目前X軸參數之範圍
set(gca,'YTick',0:25:100); %重設目前Y軸參數之範圍
%重設X軸之內標
set(gca,'XTickLabel',{'0F','45F','90F','135F','180F','225F'})
set(gca,'YTickLabel',{'0C','25C','50C','75C','100C'})
xlabel('華氏溫度') %X座標名稱
ylabel('攝氏溫度') %Y座標名稱
title('溫度之轉換圖') %圖的名稱
grid on





繪圖後若要加上其他文字於圖中,則可使用text()指令。這個指令必須先有座標方位,才能將所需之字串置入必要的所在。其格式:

text(x,y,'string')

其中,(x,y)為座標值,而字串string則需為合法之格式,但亦可使用字串列矩陣代之,其中若有部份內容須為數值變數時,則必須利用其轉換函數num2str() 將之轉為字串。有關其轉法及格式可參考手冊或執行help num2str指令。

字串中若有希臘字母,則必須利用對應之英文名稱進行轉換,通常需在名稱前加倒斜線,兩者間不能有空格。其對應之符號如表9.5。

表9.5 希臘字母及其他符號之對換










符號希臘字母符號希臘字母
\alphaα\epsilonε
\betaβ\etaη
\gammaγ\thetaθ
\deltaδ\lambdaλ
\xiξ\piπ
\rhoρ\sigmaσ
\phiφ\omegaω
\ite^{i\omegat}eiωt\le<=
\leftarrowß\rightarrowà




%Demo_10 Adding texts to a graph
x = -180:10:180;
y = cos(x*pi/180);
plot(x,y) %先行繪圖
set(gca,'XTick',-180:90:180); %重設目前X軸參數之範圍
%重設X軸之內標
set(gca,'XTickLabel',{'-180','-90','0','90','180'})
xlabel('-\pi \leq \Theta \leq \pi') %X座標名稱
ylabel('cos(\Theta)') %Y座標名稱
title('Plot of cos(\Theta)') %圖的名稱
text(-90,cos(-pi/2),'\leftarrow cos(-\pi\div4)',...
'HorizontalAlignment','left')


程式demo_10為利用表9.5製作各項標題之情形,執行後如圖9.21。


9.4其他型式之繪圖指令

除上述繪圖參數之設定外,繪圖指令仍然要考慮到座標的刻度及置放型式,其所用之繪圖指令有另外的型式,雖然其參數值與plot()指令相同。表9.6所列之繪圖指令則可以符合類似的功能。茲分別說明如下:


表1.6 各種繪圖指令之功能








指令名稱指令敘述
plot(x,y)x 軸和 y 軸均為線性刻度(Linear Scale)
loglog(x,y)x 軸和 y 軸均為對數刻度(Logarithmic Scale)
semilogx(x,y)x 軸為對數刻度,y 軸為線性刻度
semilogy(x,y)x 軸為線性刻度,y 軸為對數刻度
plotyy(x,y)畫出兩個刻度不同的y 軸
newplot決定繪圖之所在
fplot函數繪圖


9.4.1 loglog(Y)繪圖指令


語法:

loglog(X1,Y1,...)
loglog(X1,Y1,LineSpec,...)
loglog(...,'PropertyName',PropertyValue,...)
h = loglog(...)


水平及垂直座標均改為對數座標,其內參數之設定則與plot()相同。程式Demo_12則是一個穀物風阻關係的例子。其中用到logspace這一個分段的函數,其功能與前述之linspace()相同,相異之處是其前面兩參數值之範圍為十之次方值,例如logspace(a,b),則是範圍為10a至10b的意思,其等分亦以10之次方間距為之。程式執行結果如圖9.22。


%Demo_12 log-log plot for grain resistance
a=2.57e4/9.795276;b=13.2; %水稻之阻力係數
Q = logspace(-1,2);
P=a*Q.^2./log(1+b*Q);
loglog(Q,P,'linewidth',4)
title('水稻阻力曲線');
xlabel('風量率,cmm/m^2');
ylabel('單位壓降, pa/m');
grid on






9.4.2 semilogx, semilogy 繪圖指令



語法:

semilogx(X1,Y1,...)
semilogx(X1,Y1,LineSpec,...)
semilogx(...,'PropertyName',PropertyValue,...)
h = semilogx(...)
semilogy(...)
h = semilogy(...)


這是單軸取對數之指令,其應用依情況而定。對數若為X軸則使用semilogx(),反之則使用semilogy()。下面例子為一聲音的等感曲線,可以用程式demo_13繪出。其結果如圖9.23。


%Demo_13 semilogx for noise level
x=[20 100 400 1000 3000 4000 10000];
y=[70 36 10 0 -5 -4 9];
semilogx(x,y,'linewidth',3)
title('最小可聽界限');
xlabel('周波數, Hz');
ylabel('音壓位準,dB');
grid on




9.4.3 plotyy繪圖指令


語法:

plotyy(X1,Y1,X2,Y2)
plotyy(X1,Y1,X2,Y2,'function')
plotyy(X1,Y1,X2,Y2,'function1','function2')
[AX,H1,H2] = plotyy(...)


plotyy 這個指令雖與plot功能大略相同,但可以將兩張完全不同刻度的圖合併在一起,形成左右兩個垂直座標,但共用一個X軸。在plotyy(X1,Y1,X2,Y2) 指令中,分別將X1與 Y1 之對應資料繪於左邊軸上,而將 X2 與 Y2 對應資料繪於右邊軸上。左右兩軸之刻度可以不同,由MATLAB決定,或由程式以指令設定之。

第二種情況是在兩組對應資料之後,加上所謂之函數名稱,function,這是用來指定兩造繪圖之方式,function1為左邊圖,function2為右邊圖,這些函數名稱可包括如前文所討論的 plot, semilogx, semilogy, loglog, stem 或其他 MATLAB 之函數指令。所以這兩組資料所繪製之形式並不一定要一樣。程式demo_14內容為綜合上述各種指令之參數型式。其結果則如圖9.24。

在指令 [AX,H1,H2] = plotyy(...)中,其前面有三組返回值。AX表示兩座標軸之握把,AX(1) 代表左邊座標,AX(2) 為右邊座標;另H1 與 H2則代表兩圖之握把。有這些握把之後,就可對兩座標軸設定名稱及其他需要之屬性;圖的部份也可以更改圖之線型及顏色。

%Demo_14 Two functions on one plot
x = 0:0.01:10;
y1 = 100*exp(-0.1*x).*sin(x);
y2 = 0.8*exp(-0.5*x).*sin(10*x);
[ax,h1,h2] = plotyy(x,y1,x,y2,'plot');
set(get(ax(1),'Ylabel'),'String','左側 y1 函數')
set(get(ax(2),'Ylabel'),'String','右側 y2 函數')
set(h1,'Linewidth',4)
set(h2,'LineStyle',':','color','k')
xlabel('時間 0-10 \mus')
title('指令plotyy之應用')



9.5 函數繪圖指令

以函數為對象之繪圖指令有兩個,即ezplot 與fplot。前者以一般簡單函數進行繪圖;後者以自訂函數為主。茲就此兩種指令加以說明。

9.5.1 EZPLOT指令


以函數為對象這個指令,看起來雖然很 ”Easy” 但要深入應用,也沒有那容易,必須經常使用,才能純熟。

ezplot(f) 是繪製函數 f(x) 之關係,其自變數x則需給予適當範圍。若在指令的參數項中未陳述範圍時[a,b],其預設值為 -2*pi < x < 2*pi,顯然其變數為弧度,故函數性質較接近三角函數。若要自行設定範圍,則可在f之後增加一個列矩陣參數,以表示其區間,如:

ezplot(f, [a,b])


首先以f = sin(x),但不指定範圍。表示其範圍自動設定為-2*pi < x < 2*pi:

ezplot('sin(x)')





圖9.25中之橫座標為x ,並且自動標出。圖的標題則自動標出函數之內容。以下為較複雜的例子,令f=cos(x)+sin(x) ,則:

ezplot('cos(x)+sin(x)', [0, pi])





除三角函數外,其他函數型式亦可使用,以對數為例,其函數設為f(x)=log(x) +x +5,同樣可以不設範圍:


ezplot('log(x)+x + 5')






若自變數為x, y時,亦可使用,若不說明其範圍,則兩者均預設為-2*pi < x < 2*pi,其語法如下:

ezplot(f)

若 f(x,y) = 0 ,其範圍自動設為 -2*pi < x < 2*pi及-2*pi < x < 2*pi

ezplot(f, [xmin,xmax,ymin,ymax])


此為 f(x,y) = 0 之函數範圍x與y分別為 xmin 2*pi < x < xmax及ymin < y <ymax;但此兩範圍若相同,則僅提供[xmin,xmax]即可,如:

ezplot(f, [a,b])

下面之例係設f(x,y)=sin2(x)+cos2(x)-1=0:

ezplot('sin(x).^2 + cos(y).^2-1'); axis equal





此例之結果變成一個直線網絡,但其橫座標與縱座標分別為x與y。為使兩軸之比例相同,在指令後面同時宣告為axis equal。這個指令在繪圓時常需要使用到。

以繪圓為例,則需要利用兩軸之變數x與y,設其範圍為[-2,2 -2,2]。由於兩變數之範圍均相同,故僅取其一即可,即[-2,2]:


ezplot('x.^2 + y.^2 - 4',[-2,2]); axis equal






前面討論之自變數均為x, y,若改變其他名稱MATLAB也有辦法辨別,下面為函數改以 u, v為變數之情形,下述之例子以f(u,v)=u*sin(u)+v*cos(v)-2=0,其結果:


ezplot('u*sin(u)+v*cos(v)-2')



這是一個哭臉的圖像,但其變數則以u,v構成,顯然使用其他變數之名稱亦可達到同樣的功能。

類似上述不同變數之應用,有時可以將函數f=0分為兩個變數,即x(t)與y(t),兩者均以t為自變數。此時,ezplot內前二參數為此二項座標,其後則為其自變數之範圍。最後一項參數fig則是指定圖號。其語法如:

ezplot(x(t),y(t), [tmin,tmax], FIG)

下面之例子為x(t)=sin(3*t)*cost(t); y(t)=sin(3*t)*sin(t),在變數範圍為為[0 pi]之情況下形成三葉片:

ezplot('sin(3*t)*cos(t)','sin(3*t)*sin(t)',[0,pi])




下面之例子為螺線,利用變數t:

ezplot('t*cos(3*t)','t*sin(3*t)',[0,4*pi])



如前所述,函數也有手把,可以供繪圖函數呼叫。所以利用ezplot亦可使用函數手把,如在函數之名稱前加@符號:

f=@(x,y) (x.^3 + y.^5 -7*x.*y +1/7)
ezplot(f,[-3,3])
f =
@(x,y) (x.^3 + y.^5 -7*x.*y +1/7)





所以利用隱函數的表示方式亦可搭配使用。上述塗上顏色是採用fill的指令,讀者可自行嚐試其效果。

利用MATLAB自行提供的函數亦可使用,例如:


ezplot(@humps,[-6 6 -6 50])



9.5.2 fplot 繪圖指令

特定函數若具有M檔案之名稱,以 y = f(x)之型式,可以使用fplot 之指令進行繪圖。其中 x 為向量,具有特定區間;y為與 x同大小之向量,與x有對應函數值。在指定函數名稱時,可以使用字串指令eval,如:'sin(x)'、'[sin(x), cos(x)]',亦可使用函數手把呼叫。

fplot 指令在於繪製特定區間內之函數圖形。其語法如下:








語法使用說明
fplot(function,limits,LineSpec) 繪出 'function'之圖,使用limits規定之領域,配以 LineSpec之線規
fplot(function,limits,tol)使用limits規定之領域, 相對誤差值 tol (其預設值為 2e-3,亦即為 0.2%之精確度)。
fplot( function, limits, LineSpec, P1, P2,…)因函數需要加入其他輸入參數 P1, P2,函數之型式Y = function(X,P1,P2,...)之函數
fplot(axes_handle,...)使用特定座標軸之握把來指定繪在特定座標上
[X,Y] = fplot(function,limits,...)得到函數之兩個座標值,可能利用plot再將此值繪出


由表中得知:fplot(function,limits,LineSpec) 之指令係繪出 'function'之圖,使用limits規定之領域,配以 LineSpec之線規。LineSpec線規包括線之型式、標記及顏色。 fplot(function,limits,tol) 則是繪出 'function'之圖,使用limits規定之領域, 相對誤差值 tol (其預設值為 2e-3,亦即為 0.2%之精確度)。

fplot(function,limits,tol,LineSpec) 之指令係繪出 'function'內容之圖,使用limits規定之領域與相對誤差值 tol,再配以 LineSpec之線規。 fplot(function,limits,n) 是以最低n( n >= 1 )之點數繪出其圖形。

fplot(axes_handle,...) 是使用特定座標軸之握把來指定繪在特定座標上。有時可以用gca得到握把值。 [X,Y] = fplot(function,limits,...) 則得到函數之兩個座標值,可能利用plot再將此值繪出。 [...] = fplot(function,limits,tol,n,LineSpec,P1,P2,...) 則可因函數需要加入其他輸入參數 P1, P2, 等,如 Y = function(X,P1,P2,...)之函數。

若每一個x值有多個對應函數值,則對應函數值可以作成矩陣型式,利用其行向元素容納多項之對應值。而經過fplot繪出後,會同時繪出多條回應線。即:

[x] --> [f1(x) f2(x) f3(x)]
[x1 x2] --> [f1(x1) f2(x1) f3(x1); f1(x2) f2(x2) f3(x2)]

上述語法中,若需要後者輸入,而前面的項目僅需要預設值時,該項目可以空集合[]代之。

範例:



fplot('sinh',[-4 4])






繪圖的過程中,對於變化劇烈的函數,一般可用fplot 指令來進行較精確的取點作圖,它會對劇烈變化處進行較密集的取樣,例如:



fplot('cos(1/x)', [0.02 0.2]); % [0.02 0.2]





利用寫好的函數可以利用fplot繪圖,下面函數之內容為在特定x範圍內,分別求出y= x; y = x² y = x3; y = x4;y = x5 等五條曲線。其轉換值置於Y內:


function Y=polynorm(x)
Y=[x(:) x(:).^2 x(:).^3 x(:).^4 x(:).^5];

利用這個ploynorm函數,即可以fplot指令繪圖。呼叫該函數時,使用函數手把亦可,或將函數手把存在某一變數內呼叫。例如:

fh=@polynorm
fplot(fh,[-10 10 -100 100])

或,

fplot(@polynorm,[-10 10 -100 100])


其結果為:



9.5.3 newplot


 
h = newplot
h = newplot(hsave)


準備一個新圖之位置及座標,以供後續繪圖之進行。一般使用plot()指令,均需重新建圖,故其參數之設定均屬新值,若要維持先前的座標參數設定而構造新圖,則需以newplot指令為之。第二項有參數hsave,則是列出一些物件之握把,使其在新圖提出時,不將這些所列之握把物件消除。

9.6Subplot 併圖指令

同一頁面要繪製許多圖時,可以使用subplot(m,n,p)這個併圖指令,如此可以將一個大圖分成好幾個區,然後依各區需要進行繪圖。其語法如下:


subplot(m,n,p) 或 subplot mnp
subplot(m,n,p,'replace')
subplot(m,n,p,'align')
subplot(h)
subplot('Position',[left bottom width height])
h = subplot(...)

subplot(m,n,p)這個併圖指令,亦可使用subplot mnp的型式。其主要功能是將一個大圖分成好幾個區,然後依各區需要進行繪圖。這個指令中之三個參數各有不同,前兩個為圖安排之矩陣位置,例如以m x n之矩陣型式分為mn個小圖,而p則是指向第幾個要畫的圖的位置,是一個指標,其範圍為1至mn間。例如:

subplot(2,2,1), plot(fig1) %在2x2之四個圖中,繪第1個小圖
subplot(2,2,2), plot(fig2) %在2x2之四個圖中,繪第2個小圖
subplot(2,2,3), plot(fig3) %在2x2之四個圖中,繪第3個小圖
subplot(2,2,4), plot(fig4) %在2x2之四個圖中,繪第4個小圖

此外,也可以有其他參數,如語法中,'replace'將原先繪圖之內容取代新值;'align'將所設之值對齊。而'Position'則是自訂位置,不用平均分攤的方式。

下面為繪製二小圖,一左一右,置於同一圖中的情形。

%Demo_15 Multi-plot
[x1]=0:.1:10;
[y1]=1-exp(-0.5*sqrt(x1));
[y2]=exp(-0.5*sqrt(x1));
subplot(1,2,1),plot(x1,y1,'b')
grid on
xlabel('x1')
ylabel('y1')
title('y1 versus x1')
subplot(1,2,2),plot(x1,y2,'k:')
grid on
xlabel('x1')
ylabel('y22')
title('y2 vs x1')






下面之小程式是利用前面的x1, y1、x1,y2之資料繪出上下合併之圖,執行後之結果如下6。兩圖並置時,縱軸會較高,若以四圖並構則較不會失真。讀者不妨試它一試。

clf;
subplot(2,1,1), plot(x1,y1)
subplot(2,1,2), plot(x1,y2)





上面小程式執行後之結果如上圖16。兩圖並置時,縱軸會較高,若以四圖並構則可以獲得較為均勻的比例,例如:


%Demo_16 subplot for 4 graphs in log-scale
[x]=0:.1:10;
[y]=1-exp(-0.5*x);
subplot(2,2,1),plot(x,y,'b'); grid on;
xlabel('x') ; ylabel('y') ; title('y versus x')
subplot(2,2,2),semilogx(x,y,'k') ; grid on;
xlabel('x') ; ylabel('y') ; title('y versus log(x)')
subplot(2,2,3),semilogy(x,y,'r') ; grid on;
xlabel('x') ; ylabel('y') ; title('log(y) versus x')
subplot(2,2,4),loglog(x,y,'m') ; grid on;
xlabel('x') ; ylabel('y') ; title('log(y) versus log(x)')






上述內容有兩點值得注意:其一是圖的序號是依列向編排,所以1,2是第一列;圖3,4是第二列。其二是各圖所用的資料是獨立的,後者不會應用到前者。所以各圖若要顯示一致,即使相同的內容,也要個別處理。上圖係利用對數座標顯示,可以充分表現對數軸與半對數軸之利用。通常要以對數座標或半對數座標表示時,其相關指令如下:

semilogx(Y,X) 將X座標以對數而Y座標正常繪圖。
semilogy(Y,X) 將Y座標以對數而X座標正常繪圖。
loglog(Y,X) 座標XY均以對數表示繪圖。


在上述應用例中,格線指令grid也相當重要,格線則用開關的方式,grid on為打開,grid off為關閉,是一個十分靈光的指令。

在四分圖表示法中,亦可顯示成三圖的架構。此時在subplot指令之最後項必須採用向量型式,如subplot(2,2,[1 2]) 表示上兩圖合併,而subplot(2,2, [1 3])表示左兩圖合併。


subplot(2,2,[1 2]),plot(x,y,'b'); grid on;
xlabel('x') ; ylabel('y') ; title('y versus x')
subplot(2,2,3),semilogx(x,y,'k') ; grid on;
xlabel('x') ; ylabel('y') ; title('y versus log(x)')
subplot(2,2,4),semilogy(x,y,'r') ; grid on;
xlabel('x') ; ylabel('y') ; title('log(y) versus x')




subplot(2,2,[1 3]),plot(x,y,'b'); grid on;
xlabel('x') ; ylabel('y') ; title('y versus x')
subplot(2,2,2),semilogx(x,y,'k') ; grid on;
xlabel('x') ; ylabel('y') ; title('y versus log(x)')
subplot(2,2,4),semilogy(x,y,'r') ; grid on;
xlabel('x') ; ylabel('y') ; title('log(y) versus x')

9.7 繪圖附屬指令

在併圖指令之應用上,其他附屬指令如: clf, clc, axis, axes, hold, mesh 及 box等,甚至其他較特殊之繪圖指令如plot3, plotyy,contour,等等均可配合使用。在繪圖指令中,有些指令是對圖的外觀進行修飾的指令。本節就一些相關的附屬指令作一說明。

9.7.1改變圖軸長寬比


在繪圖的過程中,有時具有比例之圖會因螢幕之設定而失真,必須以另外指令進行修正,其指令說明如下:

axis normal   長寬比使用預設值(即為圖形長寬比)
axis equal   長寬比例維持不變,兩軸刻度相同
axis square   設定長寬比例為 1
axis image 兩軸刻度比例一致(適用於影像顯示)
axis equal tight 兩軸刻度比例均相同,且圖軸貼緊圖形


下面程式為利用上述之指令及subplot之繪圖指令繪製之各圖比例比較 。同樣的圖因需求不同以有不同的表示法。

%Demo_17 Axis changeing modes
[x]=0:.1:10;
[y]=1-exp(-0.5*x);
subplot(2,2,1),plot(x,y,'b'); grid on;
xlabel('x') ; ylabel('y') ; title('axis normal')
axis normal;
subplot(2,2,2),plot(x,y,'r'); grid on;
xlabel('x') ; ylabel('y') ; title('axis equal')
axis equal;
subplot(2,2,3),plot(x,y,'k'); grid on;
xlabel('x') ; ylabel('y') ; title('axis square')
axis square;
subplot(2,2,4),plot(x,y,'b'); grid on;
xlabel('x') ; ylabel('y') ; title('axis equal tight')
axis equal tight;




9.7.2改變圖軸背景顏色


圖軸與視窗之背景顏色亦可利用 colordef 指令進行變更。但在實際應用上colordef 這個指令必須在下繪圖指令之前呼叫,其產生的圖形才能依據設定的顏色發揮效用。其指令格式如下:

colordef white[ /black/none]

這個指令可以將圖軸背景變更為白色(或黑色或無色,只選其一) 。

9.7.3增減圖框


增減圖框的指令為box ,可設定為on 或off。這個指令與前面使用之grid及軸的座標axis之應用方式相同。axss on/off 表示是否要顯示座標軸。

9.8 其他特殊繪圖指令

MATLAB 還有其他各種二維繪圖指令,這些指令常配合統計上的需要而設計,對於某些數據之陳述甚為有用。茲就其中較為重要者作說明:

表9.17 其他二維繪圖指令











指令說明
1. plot3, ezplot3較精確的函數圖形
2. polar、ezpolar極座標圖
3. bar、stem長條圖、桿形圖
4. hist 方座標質方圖(累計圖)
5. stairs階梯圖
6. area 面積圖
7. pie、pie3扇形圖(二維及三維)
8. rose 極座標質方圖(累計圖)
9 compass、feather羅盤圖、羽毛圖
10. errorbar圖形加上誤差範圍


9.8.1三維指令plot3


三維指令plot3與二維 plot之功能大體相同,只是它必須配合三維座標,故需有三個對應座標值之向量輸入。其語法如下:

plot3(x,y,z,LineSpec)
plot3(x1,y1,z1,LineSpec,x2,y2,z2,LineSpec)


LineSpec為線之屬性,例如'ro-',其使用方式與前節所介紹相同。第二種語法係可以在同一圖中繪製二條以上之曲線,其線型設定也可不同。

t = 0:pi/60:10*pi;
plot3(cos(t).*sin(t),cos(t),t)
grid on
axis square


9.8.2三維指令ezplot3

這個指令與 ezplot之功能相同,其參數內容須為方程式之字串,只是此為三維繪圖指令,故必須加入z軸之方程式。其自變數則以特定範圍表示,以此指向三個對應座標之函數。其語法如下:


ezplot(x(t),y(t),z(t),[tmin tmax])

其中,[tmin tmax]為自變數t之範圍,若無此範圍參數,則預設值為[0 2*pi]。執行此指令,亦可利用軸手把呼叫。下面之例,代表三維之三個座標,其表示如下:

ezplot3('t*sin(t)', 'cos(t)', 't', [0,6*pi])



當字串傳入ezplot3之參數時,通常其參數之操作均以元素對元素的方式處理,如't*sin(t)',其意義與't.*sin(t)'之作用相同。

使用Zoom的顯示功能


在圖的顯示過程中,除利用指令顯出圖之大小外,亦可利用圖上所提供之放大縮小功能將所需之圖放大適當的位置。這個功能在有些數據相差甚為懸殊時(例如:50與 10^6 的點出現於同一圖時,前一個數據完全無法觀察得到,此時只有利用放大縮小的功能來補救,以下是示範說明。

9.8.3極座標指令 polar、ezpolar

極座標指令則是在一般二維座標中產生極座標之繪圖。其語法為:


polar(theta, rho, LineSpec)

其第一項輸入參數theta為水平角度,以弧度表示,rho則為向量。若rho隨theta而變化時,則其在極座標軸上亦會產生變化。下面之八葉扇即為其應用之一例:

theta = linspace(0, 2*pi);
polar(theta, cos(4*theta)); % 進行極座標繪圖


與polar對應,ezpolar亦可作極座標函數之繪圖,只是其所用的參數係以字串轉換為函數之內容,而自變數之範圍則可自訂,或以[0, 2*pi]為預設範圍。其語法如下:

ezpolar('function', [a, b])


例如:
ezpolar('sin(4*t)*cos(3*t)')  




以另一字串參數取代原方程式字串之方法,亦可使用。例如:

r = '100/(100+(t-1/2*pi)^8)*(2-sin(7*t)-1/2*cos(30*t))';
ezpolar(r,[-pi/2,3*pi/2])



利用inline轉換函數,亦可直接呼叫其手把,繪出其函數圖:

h=inline('sin(t)/t');
ezpolar(h,[-6*pi 6*pi])