《通信系統(tǒng)中MATLAB基礎(chǔ)與仿真應(yīng)用》課件-第4章_第1頁
《通信系統(tǒng)中MATLAB基礎(chǔ)與仿真應(yīng)用》課件-第4章_第2頁
《通信系統(tǒng)中MATLAB基礎(chǔ)與仿真應(yīng)用》課件-第4章_第3頁
《通信系統(tǒng)中MATLAB基礎(chǔ)與仿真應(yīng)用》課件-第4章_第4頁
《通信系統(tǒng)中MATLAB基礎(chǔ)與仿真應(yīng)用》課件-第4章_第5頁
已閱讀5頁,還剩166頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第4章計(jì)算結(jié)果可視化4.1MATLAB的圖形窗口4.2二維平面圖形與坐標(biāo)系4.3三維繪圖4.4特殊圖形4.5坐標(biāo)軸的控制和圖形標(biāo)注小結(jié)

習(xí)題

在一些實(shí)驗(yàn)、工程測(cè)量及科學(xué)計(jì)算中,經(jīng)常會(huì)得到大量的離散數(shù)據(jù)點(diǎn),稱做采樣點(diǎn)。在利用這些數(shù)據(jù)之前,要對(duì)其進(jìn)行分析和處理,因?yàn)閷?duì)于大量的原始數(shù)據(jù),很難直接從中找出內(nèi)在的規(guī)律而把這些數(shù)據(jù)用各種形式的圖形表示出來,也即很難把數(shù)據(jù)所反映的很多內(nèi)在規(guī)律直觀地展示在人們面前。因此,數(shù)據(jù)可視化是人們研究科學(xué)、認(rèn)識(shí)世界不可缺少的重要手段。

MATLAB在數(shù)據(jù)可視化方面提供了強(qiáng)大的功能,它可以把數(shù)據(jù)用二維、三維乃至四維圖形表現(xiàn)出來,通過對(duì)圖形的線型、立面、色彩、渲染、光線以及視角等屬性的處理,將計(jì)算數(shù)據(jù)的特性表現(xiàn)得淋漓盡致。本章通過對(duì)MATLAB在圖形和數(shù)據(jù)可視化方面功能的介紹,學(xué)習(xí)如何利用MATLAB的圖形功能來處理和解釋數(shù)據(jù)所包含的內(nèi)在規(guī)律。4.1MATLAB的圖形窗口

MATLAB有一個(gè)用于圖形輸出的專用窗口,稱為圖形窗口(FigureWindow)。通過該圖形窗口,可以自由查看和設(shè)置有關(guān)圖形輸出及表達(dá)的參數(shù),并獲得高質(zhì)量的圖形文件。

4.1.1創(chuàng)建與控制圖形輸出窗口

在執(zhí)行一個(gè)繪圖命令前,MATLAB并沒有打開圖形窗口,只有在執(zhí)行創(chuàng)建圖形窗口命令后,系統(tǒng)才會(huì)自動(dòng)創(chuàng)建一個(gè)圖形窗口。若在執(zhí)行命令前已經(jīng)存在了若干窗口,則繪圖命令會(huì)將圖像輸出到當(dāng)前窗口,并將原來存在的該窗口的圖像覆蓋掉。圖4-1圖形窗口創(chuàng)建圖形窗口的命令為Figure,其有兩種調(diào)用格式:

figure

figure(n)直接在命令窗口中鍵入“figure”,將產(chǎn)生如圖4-1所示的圖形窗口,該窗口由菜單欄、工具欄和圖形區(qū)三部分組成。與MATLAB之前的版本相比,MATLAB7.0的圖形窗口菜單欄多了“Desktop”項(xiàng)。第一種命令格式生成的圖形窗口的名稱是按照窗口創(chuàng)建的先后順序依次命名的,如Figure1,F(xiàn)igure2,…,F(xiàn)iguren,第二個(gè)命令將創(chuàng)建一個(gè)名為Figuren的新空白圖形窗口,假如窗口Figuren已經(jīng)存在,則將該窗口設(shè)置為當(dāng)前窗口。4.1.2圖形窗口的操作

圖形窗口用于對(duì)各種圖像進(jìn)行操作,其操作方法與MATLAB工作窗口類似。關(guān)于圖形窗口的獨(dú)特命令及其參數(shù)的使用和具體設(shè)置方法,將在本章以后的相關(guān)部分進(jìn)行介紹。4.2二維平面圖形與坐標(biāo)系4.2.1幾個(gè)基本的繪圖命令

1.線性坐標(biāo)曲線plot

函數(shù)命令plot是MATLAB二維曲線繪圖中最簡(jiǎn)單、最重要、使用最廣泛的一個(gè)線性繪圖函數(shù)。它可以生成線段、曲線和參數(shù)方程曲線的函數(shù)圖形,對(duì)于不同的輸入?yún)?shù),該函數(shù)有不同的形式以實(shí)現(xiàn)不同的功能。同時(shí),有其他許多特殊的繪圖命令都是以它為基礎(chǔ)的。下面分別予以詳細(xì)介紹。

1)plot(y)此命令格式中只有一個(gè)參數(shù),以該參數(shù)的值為縱坐標(biāo),橫坐標(biāo)從1開始自動(dòng)賦值為向量[1234…]或其轉(zhuǎn)置向量,向量的方向和長(zhǎng)度與參數(shù)y相同。

【例4-1】用命令plot(y)繪制曲線,其中y=[5349023]。在MATLAB命令窗口中直接鍵入:

y=[5349023];

plot(y)運(yùn)行結(jié)果顯示出如圖4-2所示的曲線,其橫坐標(biāo)為向量[1234567]的元素值,縱坐標(biāo)為向量y的元素值。

2)參數(shù)式plot(x,y)這是plot最常用的命令格式,參數(shù)x和y都是長(zhǎng)度為n的向量,x為橫坐標(biāo)向量,y為縱坐標(biāo)向量。這種調(diào)用可以用來生成參數(shù)方程的圖形。圖4-2plot(y)繪出的圖像

【例4-2】繪制函數(shù)y=cos(x)在兩個(gè)周期內(nèi)的圖形。在MATLAB命令窗口中直接鍵入:

t=0:0.01:2*pi;

y=cos(t);

plot(t,y)將繪出如圖4-3所示的兩個(gè)周期的余弦曲線。注意:x和y必須方向相同(行或列)、長(zhǎng)度相等,否則MATLAB將提示錯(cuò)誤信息。此種命令格式還可以包括多個(gè)長(zhǎng)度和向量x相等的列向量,此時(shí)將在圖形窗口中繪制出多條曲線(如圖4-4所示)。圖4-3plot(t,y)繪出的圖像圖4-4同一窗口中的正弦函數(shù)和余弦函數(shù)的圖像

【例4-3】在同一圖形窗口中繪制出正弦函數(shù)和余弦函數(shù)的圖形。

t=0:0.01:2*pi;

y=[sin(t);cos(t)];

plot(t,y)繪出的曲線如圖4-4所示。

3)plot(Y)在plot(Y)中,Y是一個(gè)m×n的矩陣。MATLAB為矩陣的每一列劃出一條線,同時(shí)以矩陣的行向量為基準(zhǔn)對(duì)x軸進(jìn)行分度和標(biāo)注,標(biāo)注時(shí)采用向量1:m,這里m是矩陣的行數(shù)。

【例4-4】繪制矩陣Y=[5438910;344582;81213211825;988967]的圖形。

y=[5438910;344582;81213211825;988967];

plot(y)如圖4-5所示,MATLAB按矩陣Y的列向量繪制出六條曲線,而x軸的取值則為矩陣Y的行向量,即取1234。圖4-5矩陣的圖像

4)混合式plot(X,Y)在混合式的命令格式中,對(duì)于X和Y而言,可分下列幾種情況:

(1)如果X和Y都是向量,則長(zhǎng)度必須相等。

(2)如果X是向量,而Y是一個(gè)矩陣,X的長(zhǎng)度與矩陣Y的行數(shù)或列數(shù)相等,則它的作用是將向量X與矩陣Y的每列或每行的向量相對(duì)應(yīng)作折(曲)線;當(dāng)Y是方陣時(shí),則將向量X與矩陣Y的列向量對(duì)應(yīng)作圖。

(3)如果X是矩陣,Y是向量,Y的長(zhǎng)度等于矩陣X的行數(shù)或列數(shù),則將X的每列或每行的向量與Y相對(duì)應(yīng)作圖;當(dāng)X是方陣時(shí),則將X的各列與Y相對(duì)應(yīng)作圖。

(4)如果X和Y都是矩陣,且維數(shù)相同,則按列與列的對(duì)應(yīng)方式來作圖。

【例4-5】繪制混合式的圖形。

x=1:length(peaks);

plot(x,peaks)

執(zhí)行結(jié)果如圖4-6所示。

5)復(fù)數(shù)向量式plot(Z)當(dāng)向量Z為一個(gè)復(fù)數(shù)向量時(shí),MATLAB將會(huì)忽略向量的虛部。也可以在調(diào)用時(shí)獨(dú)立給出一個(gè)復(fù)參數(shù),這時(shí)相當(dāng)于兩個(gè)指令的組合。例如,命令plot(Z)和plot(real(Z),imag(Z))是等效的(這里Z是一個(gè)復(fù)數(shù)向量)。

6)綜合調(diào)用方式plot(x1,yl,x2,y2,…)用這種形式也可以在同一窗口中繪制多條曲線,而且每條曲線的橫坐標(biāo)可以不同,每一組向量也可以有不同的長(zhǎng)度。圖4-6混合式plot(X,Y)

【例4-6】在同一窗口中繪制多條曲線,并且坐標(biāo)和長(zhǎng)度都不同。在MATLAB命令窗口中直接鍵入:

t1=0:0.1:3*pi;

t2=0:0.1:6;

plot(t1,sin(t1),t2,sqrt(t2))

運(yùn)行結(jié)果如圖4-7所示,兩條曲線的長(zhǎng)度和坐標(biāo)都不相同。plot命令是二維平面繪圖中最重要、最常用的命令,讀者可在具體的應(yīng)用中加以體會(huì)、理解和掌握。圖4-7復(fù)數(shù)向量式plot(Z)繪出的圖像

2.對(duì)數(shù)坐標(biāo)曲線命令函數(shù)semilogx、semilogy和loglog用來繪制二維對(duì)數(shù)坐標(biāo)曲線,這幾個(gè)命令的用法與函數(shù)plot相同。

【例4-7】繪制正弦函數(shù)的對(duì)數(shù)坐標(biāo)曲線。在MATLAB命令窗口中鍵入如下內(nèi)容:

t=0.1:0.1:3*pi;

y=sin(t);

semilogx(t,y)

gridon最后一行命令gridon表示為圖形窗口添加網(wǎng)格,其運(yùn)行結(jié)果如圖4-8所示。注意:函數(shù)semilogx繪出的曲線,其橫坐標(biāo)為對(duì)數(shù)坐標(biāo);函數(shù)semilogy繪制的曲線,其縱坐標(biāo)為對(duì)數(shù)坐標(biāo);函數(shù)loglog繪制的曲線,其橫、縱坐標(biāo)均為對(duì)數(shù)坐標(biāo)。圖4-8繪制對(duì)數(shù)坐標(biāo)曲線

3.雙y軸圖形

用plotyy函數(shù)可以繪制左右均有y軸的圖形,其有以下幾種常用的調(diào)用格式:

1)plotyy(x1,y1,x2,y2)此種調(diào)用格式可以在窗口中同時(shí)繪制兩條曲線:(xl,y1)和(x2,y2),曲線(x1,y1)用左側(cè)的y軸,曲線(x2,y2)用右側(cè)的y軸。

2)plotyy(x1,y1,x2,y2,′fun′)這種命令格式的使用與上面相同,只是多了′fun′項(xiàng)?!鋐un′是字符串格式,用來指定繪圖的函數(shù)名,如plot、semilogx,semilogy等。例如命令:

plotyy(xl,yl,x2,y2,′semilogx′)就是用函數(shù)semilogx來繪制兩條曲線,具體用法如例4-8所示。

【例4-8】用plotyy函數(shù)繪制雙y軸圖形。

t1=0:0.1:3*pi;

t2=0:0.1:6;

y1=sin(t1);

y2=sqrt(t2);

plotyy(t1,y1,t2,y2,′semilogx′)

gridon%為圖形窗口添加網(wǎng)格程序運(yùn)行結(jié)果所繪的曲線如圖4-9所示。圖4-9用指定函數(shù)名繪圖

3)plotyy(x1,y1,x2,y2,′fun1′,′fun2′)同第二種命令格式相類似,只是用′funl′和′fun2′指定不同的繪圖函數(shù)分別繪制這兩條曲線。其具體用法結(jié)合例4-9加以說明。

【例4-9】在同一圖形窗口中,用不同的繪圖函數(shù)繪制同一函數(shù)曲線y=的雙y軸圖形。

x=0:0.1:6;

y=sqrt(x);

plotyy(x,y,x,y,′semilogy′,′plot′)

結(jié)果如圖4-10所示。從圖中可知,左側(cè)的y軸為對(duì)數(shù)坐標(biāo),它與semilogy函數(shù)繪制的曲線對(duì)應(yīng);右側(cè)的y軸為線性坐標(biāo),它與plot函數(shù)繪制的曲線對(duì)應(yīng)。在彩色顯示下,每條曲線和其對(duì)應(yīng)的y軸顏色相同,而兩個(gè)y軸的顏色互不相同。注意:plotyy函數(shù)不能加入設(shè)置曲線線型、顏色及標(biāo)出數(shù)據(jù)點(diǎn)的參數(shù)。圖4-10用不同的繪圖函數(shù)繪制同一曲線的雙y軸圖形4.2.2線型和顏色

前面介紹的plot函數(shù)有多種用法,在繪圖時(shí)MATLAB自動(dòng)安排作圖的線型和線段的顏色以及線段頂點(diǎn)的標(biāo)記。事實(shí)上,利用MATLAB的plot函數(shù)可以設(shè)置和管理曲線的線段顏色、線段類型和頂點(diǎn)標(biāo)記。

MATLAB定義的常用線段顏色、線段類型和頂點(diǎn)標(biāo)記的參數(shù)如表4-1所示。在plot函數(shù)中,最典型的調(diào)用方式是三元組參數(shù),即:

plot(x,y,s)其中,s為類型說明參數(shù),它是字符串,由表4-l中列出的符號(hào)組成。表4-1MATLAB常用的線段顏色、線段類型和頂點(diǎn)標(biāo)記參數(shù)使用過程中,應(yīng)注意以下幾點(diǎn):

(1)s字符串可以是三種類型的符號(hào)之一,也可以是線型與顏色和頂點(diǎn)標(biāo)記與顏色的組合。例如,字符串“r”表示繪制紅色實(shí)線;“:yx”表示繪制黃色虛線,同時(shí)用符號(hào)“:x”標(biāo)記數(shù)據(jù)點(diǎn)。

(2)在plot函數(shù)指令中,如果沒有s參數(shù),則plot將使用缺省設(shè)置繪制曲線。MATLAB缺省規(guī)定曲線一律用“實(shí)線”線型。不同曲線將按表4-1所給的前7種顏色次序進(jìn)行著色。

(3)通常在當(dāng)前坐標(biāo)系中繪圖時(shí),每調(diào)入一次繪圖函數(shù)(如調(diào)用plot時(shí)),MATLAB將擦掉坐標(biāo)系中已有的圖形對(duì)象。為了在一個(gè)坐標(biāo)系中增加新的圖形對(duì)象,可以用MATLAB的holdon命令來達(dá)到這個(gè)目的。設(shè)置了holdon后,MATLAB再生成新的圖形時(shí),保留當(dāng)前坐標(biāo)系中已存在的圖形對(duì)象。此時(shí),MATLAB根據(jù)新圖形的大小,可能會(huì)重新改變坐標(biāo)系的比例。此處通過例4-10來說明用不同的線型和標(biāo)注來繪制兩條曲線所產(chǎn)生的效果。

【例4-10】用不同的線型和標(biāo)注來繪制兩條曲線。

t1=0:0.l:2*pi;

t2=0:0.l:6;

y1=sin(t1);

y2=sqrt(t2);

plot(tl,yl,′:hb′,t2,y2,′--g′)運(yùn)行結(jié)果如圖4-11所示。在圖4-11中,正弦曲線用藍(lán)色點(diǎn)線表示,其數(shù)值點(diǎn)用六角形繪制,第二條函數(shù)曲線用綠色虛線表示。圖4-11用不同的線型和標(biāo)記繪制曲線4.2.3二維數(shù)值函數(shù)曲線的專用命令fplot前面介紹的繪圖命令在繪制一個(gè)函數(shù)y=f(x)圖形時(shí),必須先定義自變量調(diào)用的一組取值點(diǎn),再求出這組取值點(diǎn)的函數(shù)值,然后根據(jù)這兩組數(shù)值確定的數(shù)據(jù)點(diǎn)繪制出所需的圖形。而在實(shí)際應(yīng)用中,繪制函數(shù)二維曲線時(shí)一般并不清楚函數(shù)的具體情況,因而在確定自變量x的取值間隔時(shí),一律用平均間隔,用這種方法繪制的圖形不夠準(zhǔn)確。下面介紹繪制函數(shù)y=f(x)圖形的一個(gè)專用命令fplot。該命令的特點(diǎn)在于它的繪圖數(shù)據(jù)點(diǎn)是自適應(yīng)產(chǎn)生的,即在函數(shù)曲線平坦處,它所取數(shù)據(jù)點(diǎn)比較稀疏,而在函數(shù)變化劇烈處,它將自動(dòng)取較密的數(shù)據(jù)點(diǎn)。因此,對(duì)于那些導(dǎo)數(shù)變化較大的函數(shù),用fplot函數(shù)繪出的曲線比用等分取點(diǎn)所畫的曲線更加接近真實(shí)。fplot函數(shù)命令的調(diào)用格式為[X,Y]=fplot(fun,lims,tol,n,′linespec′,p1,p2,…)各參數(shù)含義如下:

·fun:函數(shù)名字符串,可以是一個(gè)由多個(gè)分量函數(shù)構(gòu)成的函數(shù)行向量,分量函數(shù)可以是MATLAB的已有函數(shù),也可以是用戶自己定義的函數(shù)。

·lims:定義x的取值區(qū)間,lims=[xmin,xmax]。

·tol:相對(duì)誤差,默認(rèn)值為2e-3。tol越小,所繪制的曲線就越接近實(shí)際曲線的情況,但系統(tǒng)將為此占用很大資源。

·n:繪圖的最少點(diǎn)數(shù)(n+1)。

·′linespec′:線性設(shè)置。

·p1,p2,…:函數(shù)傳遞參數(shù)。

·X,Y:數(shù)組數(shù)據(jù)點(diǎn)坐標(biāo)。注意:調(diào)用上述命令格式時(shí),MATLAB會(huì)把數(shù)據(jù)點(diǎn)坐標(biāo)輸入X、Y,并沒有用圖形顯示出來,如需要顯示圖形,則可以不加這兩個(gè)參數(shù);如果要使用tol、n或是′linespec′的默認(rèn)參數(shù),則可以給函數(shù)傳遞一個(gè)空矩陣作為參數(shù);在相同的數(shù)據(jù)下,自適應(yīng)取點(diǎn)所繪的圖形更加真實(shí),但自適應(yīng)取點(diǎn)所用的時(shí)間較長(zhǎng)。下面通過例4-11來對(duì)命令plot和fplot進(jìn)行比較。

【例4-11】plot和fplot命令的比較。在命令窗口中鍵入如下程序:

(1)創(chuàng)建函數(shù)M文件funfplot。

functiony=funfplot(x)

y=sin(1./tan(pi.*x));

(2)將用fplot命令求得的坐標(biāo)點(diǎn),按照對(duì)應(yīng)大小,創(chuàng)建一個(gè)等間距坐標(biāo)點(diǎn)賦值給矩陣X,Y。[X,Y]=fplot(′funfplot′,[-0.1,0.1],2e-4);n=size(X);

x=-0.1:0.2/(n(1)+1):0.1;

y=funfplot(x);

(3)用fplot和plot命令作圖,比較二者的不同。

plot(x,y)

figure %打開一個(gè)新的圖形窗口

plot(X,Y) %該命令等價(jià)于fplot(′funfplot′,[-0.1,0.1],2e-4);運(yùn)行結(jié)果如圖4-12和圖4-13所示。圖4-12用plot命令繪圖的效果圖4-13用fplot命令繪圖的效果4.2.4二維符號(hào)函數(shù)曲線的專用命令ezplot為使用戶更加方便地實(shí)現(xiàn)函數(shù)可視化,并完善符號(hào)函數(shù)的圖形功能,MATLAB加入了繪制二維符號(hào)函數(shù)或字符串函數(shù)的專用命令ezplot。以字符“ez”開頭表示“easyto”的意思。其使用命令格式為ezplot(sym-fun,limits)各參數(shù)含義如下:

·sym-fun:符號(hào)函數(shù)或代表它的符號(hào)變量。

·limits:自變量x的取值范圍,即limits=[x1,x2],其默認(rèn)值為[-2pi,2pi]?,F(xiàn)通過例4-12予以說明。

【例4-12】ezplot繪圖函數(shù)的用法。

symsx

f=(x^2)^(cos(x^2));

ezplot(f)其運(yùn)行結(jié)果如圖4-14所示。圖4-14用ezplot命令繪制的曲線4.2.5圖形窗口的分割

有時(shí)需要在一個(gè)圖形窗口中顯示多幅圖,以便對(duì)幾個(gè)函數(shù)進(jìn)行直觀的比較。由于每個(gè)繪圖命令在繪制數(shù)據(jù)圖像時(shí)都會(huì)將已有的圖形覆蓋掉,而用hold命令不能實(shí)現(xiàn)同時(shí)顯示幾個(gè)不同坐標(biāo)尺寸下的圖形,用figure命令再創(chuàng)建窗口又很難同時(shí)比較由不同的數(shù)據(jù)繪得的圖像。對(duì)于此類問題,MATLAB創(chuàng)建了關(guān)于實(shí)現(xiàn)在同一個(gè)窗口中同時(shí)顯示多個(gè)圖像的命令subplot,其使用格式為

subplot(m,n,i)含義為:把圖形窗口分割為m行n列的子窗口,然后選定第i個(gè)窗口為當(dāng)前窗口。例如:subplot(2,2,4)意為把圖形窗口分為2行2列共4個(gè)子窗口,選擇第2行第2列(排序?yàn)?)的子窗口為當(dāng)前窗口進(jìn)行操作。

【例4-13】用subplot函數(shù)把兩種不同的圖形綜合在一個(gè)圖形窗口中。

subplot(2,2,1)

t=0.1:0.1:2*pi;

y=sin(t);

semilogx(t,y)

gridon

subplot(2,2,2)

t=0:0.1:4*pi;

y=sin(t);

plot(t,y)

subplot(2,2,3)

x=1:0.01:5;

y=exp(x);

plotyy(x,y,x,y,′semilogx′,′plot′)

subplot(2,2,4)

x=1:0.1:10;

y=sqrt(x);

plot(x,y,′:rd′)這一組命令可在同一個(gè)圖形窗口中繪制出如圖4-15所示的4幅不同的圖形。圖4-15把一個(gè)窗口分為4個(gè)子窗口注意:subplot命令不僅適用于二維圖形,對(duì)三維圖形一樣適用。其本質(zhì)是將figure窗口分為幾個(gè)區(qū)域,再在每個(gè)區(qū)域內(nèi)分別繪圖。

(1)如果坐標(biāo)系存在,則將其設(shè)為當(dāng)前坐標(biāo)系。命令subplot(′position′,[leftbottomwidthheight])是在普通坐標(biāo)系中創(chuàng)建一個(gè)新的坐標(biāo)系。其中,各參量在0到1之間取值。

(2)如果subplot命令所指定的區(qū)域與原有的區(qū)域重合(全部或部分),則原區(qū)域?qū)⒈粍h除。

subplot(111)是一個(gè)特殊的情況,它與subplot(1,1,1)不同,該調(diào)用并不立刻創(chuàng)建坐標(biāo)系,而是使下一條繪圖命令在窗口中執(zhí)行clf和reset命令(刪除當(dāng)前圖形的所有子對(duì)象),然后在默認(rèn)位置創(chuàng)建一個(gè)坐標(biāo)系。這種調(diào)用沒有返回值。4.2.6坐標(biāo)系的調(diào)整

由前面的例子已經(jīng)看到,MATLAB的繪圖函數(shù)可以根據(jù)要繪制的曲線數(shù)據(jù)范圍自動(dòng)地選擇合適的坐標(biāo)系,使曲線盡可能清晰地顯示出來。因此,一般情況下用戶不必自己選擇繪圖坐標(biāo)。如果覺得自動(dòng)選擇的坐標(biāo)不太合適,則可以用手動(dòng)的方式選擇新的坐標(biāo)系,在MATLAB中能實(shí)現(xiàn)此功能的命令就是axis函數(shù)。其調(diào)用格式為

axis([xmin,xmax,ymin,ymax,zmin,zmax])注意:坐標(biāo)的最小值(xmin,ymin,zmin)必須小于相應(yīng)的最大值(xmax,ymax,zmax),否則會(huì)出錯(cuò)。

【例4-14】使用自動(dòng)坐標(biāo)系與使用axis函數(shù)調(diào)整后的坐標(biāo)系的比較。

subplot(2,1,1)

t=0:0.1:4*pi;

y=sin(t);

plot(t,y)

subplot(2,l,2)

t=0:0.1:4*pi;

y=sin(t);

plot(t,y)

axis([0,max(t),min(y),max(y)])運(yùn)行結(jié)果如圖4-16所示。圖4-16用axis命令調(diào)整前、后的比較4.3三維繪圖

MATLAB具有強(qiáng)大的三維圖形處理功能,包括三維數(shù)據(jù)顯示、空間曲線、曲面、分塊、填充以及曲面光順著色、視點(diǎn)變換、旋轉(zhuǎn)、隱藏等功能和操作。

4.3.1基本的三維繪圖命令

繪制三維線條圖的函數(shù)plot3和二維繪圖函數(shù)plot相比,只多了第三維數(shù)據(jù),其他與二維函數(shù)plot相同。其調(diào)用格式為

plot3(X1,Y1,Z1,s1,X2,Y2,Z2,s2,…)或plot3(X,Y,Z,s)參數(shù)的含義如下:

·Xn、Yn、Zn:分別為第一到三維數(shù)據(jù),是向量或矩陣,但必須尺寸相等。

·s、s1、s2:可選的字符串,用來設(shè)置線型、顏色以及數(shù)據(jù)點(diǎn)標(biāo)記等。提示:當(dāng)X、Y、Z是同維向量時(shí),繪制以向量X、Y、Z的元素為x、y、z坐標(biāo)的三維曲線。當(dāng)X、Y、Z是同維矩陣時(shí),以X、Y、Z對(duì)應(yīng)列元素為x、y、z坐標(biāo)分別繪制曲線,曲線條數(shù)等于矩陣的列數(shù)。繪制線圖“四元組”(X1,Y1,Z1,s1)、(X2,Y2,Z2,s2)的結(jié)構(gòu)和作用與(X、Y、Z、s)相同。不同的是,“四元組”之間沒有約束關(guān)系。三維線條圖指令plot3主要用來表現(xiàn)單參數(shù)的三維曲線。

【例4-15】繪制一個(gè)三維螺旋線。

t=0:0.1:8*pi;

plot3(sin(t),cos(t),t)

title(′繪制螺旋線′)%用命令title對(duì)圖形主題進(jìn)行標(biāo)注

xlabel(′sin(t)′,′FontWeight′,′bold′,′FontAngle′,′italic′)

ylabel(′cos(t)′,′FontWeight′,′bold′,′FontAngle′,′italic′)

zlabel(′t′,′FontWeight′,′bold′,′FontAngle′,′italic′)%命令zlabel用來指定z軸的數(shù)據(jù)名稱

gridon

其執(zhí)行結(jié)果如圖4-17所示。圖4-17三維螺旋線在圖4-17中,如果把圖中的軸z(t)去掉,即相當(dāng)于從上往下看這幅圖,則它是一個(gè)圓,這和plot(sin(t),cos(t))繪制的曲線相同。由此可見,plot3實(shí)際上就是二維函數(shù)plot在三維空間上的擴(kuò)展。程序中,命令zlabel用來指定z軸的數(shù)據(jù)名稱;命令gridon是在圖底繪制三維網(wǎng)格;命令title是對(duì)圖形主題進(jìn)行標(biāo)注。下面給出一個(gè)x、y、z都是矩陣的例子。

【例4-16】x、y、z都是矩陣時(shí),plot3命令的使用。[X,Y]=meshgrid(-pi:0.1:pi);

Z=sin(X)+cos(Y);

plot3(X,Y,Z)其執(zhí)行結(jié)果如圖4-18所示。圖4-18plot3的參數(shù)為矩陣4.3.2線和面的填色

在MATLAB中,函數(shù)fill和patch是圖形的填充函數(shù),它們的用法基本相同,下面僅以函數(shù)patch為例來說明這兩個(gè)函數(shù)的使用。

patch函數(shù)的調(diào)用格式為:

patch(X,Y,C)%繪制二維圖形時(shí)

patch(X,Y,Z,C)%繪制三維圖形時(shí)函數(shù)中參數(shù)X、Y、Z是向量或矩陣,C用來指定顏色。

【例4-17】用patch函數(shù)命令建立一個(gè)六邊形,其填充顏色為紅色。

patch([0,0.2,0.5,0.8,1,0.5,0],[1,0.3,0,0.3,1,1.8,1],′r′)其執(zhí)行結(jié)果如圖4-19所示。圖4-19用patch命令填充后的圖形4.3.3三維曲面繪圖命令

三維曲面繪圖命令可分為平面網(wǎng)格點(diǎn)的生成、在平面網(wǎng)格的基礎(chǔ)上繪制三維網(wǎng)格以及對(duì)三維表面進(jìn)行處理三個(gè)步驟。

1.平面網(wǎng)格點(diǎn)的生成

在數(shù)學(xué)上,函數(shù)z=f(x,y)的圖像是三維空間的曲面,在MATLAB中,總是假設(shè)函數(shù)z=f(x,y)定義在一個(gè)矩形的區(qū)域D=[x0,xm]×[y0,yn]內(nèi)。為了繪制在區(qū)域D上的三維曲面,MATLAB的方法是首先將[x0,xm]在x方向分成m份,將[y0,yn]在y方向分成n份,由各分劃點(diǎn)分別作平行于坐標(biāo)軸的直線,將區(qū)域D分成m×n個(gè)小矩形,計(jì)算出網(wǎng)格點(diǎn)的函數(shù)值。對(duì)于每個(gè)小矩形,在空間中決定出四個(gè)頂點(diǎn)(xi,yi,f(xi,yi)),連接四個(gè)頂點(diǎn)得到一個(gè)空間的四邊形片。而所有這些四邊形片連在一起構(gòu)成函數(shù)z=f(x,y)定義在區(qū)域D上的空間網(wǎng)格曲面。在MATLAB中,用函數(shù)meshgrid命令來生成x-y平面上的小矩形頂點(diǎn)坐標(biāo)值的矩陣。其調(diào)用形式為[X,Y]=meshgrid(x,y)或

{X,Y}=meshgrid(x)%此種形式等價(jià)于{X,Y}=meshgrid(x,x)格式中的參數(shù)含義如下:

·x:區(qū)間[x0,xm]上分劃點(diǎn)組成的向量。

·y:區(qū)間[y0,yn]上分劃點(diǎn)組成的向量。

·X,Y:輸出變量矩陣,矩陣X的行向量都是向量x,矩陣Y的列向量都是向量y。這樣,X和Y的元素組(X(i,j),Y(i,j))恰好是區(qū)域D的第(i,j)網(wǎng)格頂點(diǎn)。例如,(X(1,1),Y(1,1))對(duì)應(yīng)于(x0,y0)點(diǎn),而(X(m+1,n+1),Y(m+1,n+1))對(duì)應(yīng)于(xm,xn)點(diǎn)。也就是說,函數(shù)meshgrid將有兩個(gè)向量決定的區(qū)域轉(zhuǎn)換為對(duì)應(yīng)的網(wǎng)格點(diǎn)矩陣。在計(jì)算網(wǎng)格點(diǎn)處的函數(shù)值時(shí),由于矩陣X和Y的對(duì)應(yīng)元素恰好組成某個(gè)網(wǎng)格點(diǎn),因此利用MATLAB的矩陣運(yùn)算能力,可以很容易地求出由所有網(wǎng)格點(diǎn)上的函數(shù)值組成的矩陣。下面通過例子來具體說明其用法。

【例4-18】數(shù)學(xué)函數(shù)z=x×,其定義區(qū)域?yàn)椋?2,2]×[-2,2]。在生成網(wǎng)格后,計(jì)算網(wǎng)格點(diǎn)上的函數(shù)值。[X,Y]=meshgrid(-2:2:2,-2:2:2);[X,Y];%將劃分結(jié)果輸出至矩陣X、Y

ans=

-2 0 2 -2 -2 -2

-2 0 2

0

0

0

-2 0 2

2

2

2

Z=X.*exp(-X.^2-Y.^2) %計(jì)算網(wǎng)格點(diǎn)上的函數(shù)值并賦予變量Z

Z=

-0.0007 0 0.0007

-0.0366 0 0.0366

-0.0007 0 0.0007

2.三維網(wǎng)格函數(shù)mesh

在得到了網(wǎng)格點(diǎn)上的函數(shù)值矩陣后,可以利用MATLAB中的函數(shù)mesh來生成函數(shù)的網(wǎng)格曲面,即各網(wǎng)格線段組成的曲面。mesh函數(shù)的調(diào)用格式如下:

·mesh(X,Y,Z,C):這是最一般的調(diào)用形式。X、Y、Z、C是同維數(shù)的矩陣,X、

Y、Z對(duì)應(yīng)確定空間上的網(wǎng)格點(diǎn),C為顏色矩陣。也就是說,網(wǎng)格曲面的頂點(diǎn)對(duì)應(yīng)于空間的頂點(diǎn)(X(i,j),Y(i,j),Z(i,j)),而網(wǎng)格曲面的網(wǎng)格線顏色由C的值根據(jù)當(dāng)前的色譜來著色。此種調(diào)用形式還可以用來生成參數(shù)曲面片。

·mesh(X,Y,Z):調(diào)用形式如同mesh(X,Y,Z,C)中C=Z的情況。

·mesh(x,y,Z,C):其中,x和y是向量,Z和C是同維數(shù)的矩陣,且向量x的長(zhǎng)度等于矩陣Z的列數(shù),而向量y的長(zhǎng)度等于矩陣Z的行數(shù)。即length(x)=n,length(y)=m,這里[m,n]=size(Z)。此時(shí)網(wǎng)格曲面的網(wǎng)格頂點(diǎn)是(x(j),y(i),Z(i,j)),網(wǎng)格線的顏色由矩陣C決定。

·mesh(x,y,Z):調(diào)用形式如同mesh(x,y,Z,C)中C=Z的簡(jiǎn)單調(diào)用形式。

·mesh(Z,C):Z和C都是m×n的矩陣,等價(jià)于mesh(x,y,Z,C),只是此時(shí)向量x=1:n,向量y=1:m。

·mesh(Z):調(diào)用形式如同mesh(Z,C)中C=Z的簡(jiǎn)單調(diào)用形式。

·mesh(…,′PropertyName′,ProvertyValue,…):此種調(diào)用形式是給函數(shù)mesh設(shè)置曲面屬性,具體用法同前面。下面通過例4-19來說明函數(shù)mesh的用法。

【例4-19】用mesh命令繪制例4-18中的網(wǎng)格曲面。[X,Y]=meshgrid(-2:.2:2,-2:.2:2);

Z=X.*exp(-X.^2-Y.^2);

mesh(Z)生成的圖形如圖4-20所示。與mesh相關(guān)的另外兩個(gè)函數(shù)是meshc和meshz,它們的調(diào)用形式與mesh相同。其區(qū)別在以下兩個(gè)方面:

·meshc除生成網(wǎng)格曲面外,還在x-y平面上生成曲面的等高線圖形,如圖4-21中圖a函數(shù)meshc的繪圖所示。

·meshz除生成與mesh相同的網(wǎng)格曲面外,還在曲面下面加上一個(gè)長(zhǎng)方體的臺(tái)柱,其圖形更加美觀,如圖4-21中圖b函數(shù)meshz的繪圖所示。圖4-20用mesh函數(shù)命令生成的網(wǎng)格曲面圖4-21meshc和meshz生成的圖形

【例4-20】演示函數(shù)meshc和meshz的用法,注意比較它們的不同。[X,Y]=meshgrid(-2:.2:2,-2:.2:2);

Z=X.*exp(-X.^2-Y.^2);

subplot(2,l,1)

meshc(Z)

subplot(2,1,2)

meshz(Z)

3.三維表面命令surf實(shí)曲面是對(duì)網(wǎng)格曲面的網(wǎng)格塊區(qū)域進(jìn)行著色的結(jié)果。在MATLAB中,函數(shù)surf可實(shí)現(xiàn)對(duì)網(wǎng)格曲面進(jìn)行著色,將網(wǎng)格曲面轉(zhuǎn)化為實(shí)曲面。surf命令的調(diào)用格式與mesh相同,這里不再重復(fù),僅僅給出例子加以說明。函數(shù)surf的曲面生成過程與mesh相似,但著色機(jī)理與mesh不同。mesh命令僅對(duì)網(wǎng)格線著色,而surf是對(duì)網(wǎng)格片著色,網(wǎng)格線用黑色標(biāo)出(默認(rèn))。一般情況下,surf用默認(rèn)的著色方式對(duì)曲面片著色,還可以用MATLAB的函數(shù)shading來改變著色方式。

【例4-21】利用三維網(wǎng)格表面命令surf繪制圖形。

z=peaks;%繪制山峰的圖像,將函數(shù)值賦予變量z

surf(z) %對(duì)山峰的圖像進(jìn)行著色處理

shadinginterp其運(yùn)行結(jié)果如圖4-22所示。圖4-22三維表面圖

4.3.4基本三維繪圖命令的幾個(gè)改進(jìn)命令

在基本三維繪圖命令的基礎(chǔ)上,MATLAB提供了一些對(duì)其功能進(jìn)行改進(jìn)和加強(qiáng)的命令。

1.pcolor命令

pcolor命令用于繪制偽彩圖,其調(diào)用命令格式為:

·pcolor(Z):以矩陣Z的下標(biāo)為橫坐標(biāo)繪制偽彩圖;

·pcolor(x,y,z):以向量x、y為橫坐標(biāo)繪制偽彩圖。

【例4-22】用函數(shù)pcolor繪制偽彩圖,命令為

pcolor(peaks)其執(zhí)行結(jié)果如圖4-23所示。圖4-23偽彩圖

2.surfl命令

此命令用于繪制在控制光線情況下的表面圖。

surfl(…)與surf(…)的調(diào)用格式相同,只是在函數(shù)surfl中,有控制光線視角的功能。注意:在格式surfl(Z)、surf1(X,Y,Z)、surfl(Z,S)和surfl(X,Y,Z,S)中,S是光源位置。如果S具體確定,即S=[Sx,Sy,Sz]或S=[AZ,EL]已經(jīng)確定,則上述格式的調(diào)用相同;默認(rèn)情況下,光源在從視線角度逆時(shí)針旋轉(zhuǎn)45°的位置。

【例4-23】用函數(shù)surfl命令繪制圖形,命令為

surfl(peaks)其執(zhí)行結(jié)果如圖4-24所示。圖4-24光線受控圖

3.waterfall命令

此命令用于繪制類似瀑布流水形狀的網(wǎng)格圖,其使用格式和mesh命令基本相同,只是不畫縱向的線條,因而產(chǎn)生類似“瀑布”的效果。

【例4-24】繪出三維高斯分布的瀑布圖。

waterfall(peaks)

axistight其執(zhí)行結(jié)果如圖4-25所示。圖4-25瀑布圖4.3.5等高線圖形的繪制、標(biāo)注和填充

MATLAB支持二維和三維的等高線圖形,函數(shù)contour和contour3可繪制出二維和三維圖形的等高線,用戶可以指定等高線的條數(shù)、坐標(biāo)系的比例及某值上的等高線。contour和contour3的調(diào)用方式相同,只是contour3要繪制相應(yīng)的z軸。下面以contour為例,說明它們的調(diào)用方式:

·contour(Z):直接繪制矩陣Z的等高線。

·contour(X,Y,Z):用X和Y指定等高線的x、y坐標(biāo)。

·contour(Z,n)和contour(X,Y,Z,n):繪制n條等高線。

·contour(Z,V)和contour(X,Y,Z,V):向量V中的元素指定等高線的位置,該向量長(zhǎng)度length(V)對(duì)應(yīng)繪制的等高線條數(shù)。如果只在一個(gè)高度z繪出等高線,則V=[z,z]。

·[C,H]=contour(…):返回等高線矩陣C和列向量H,H是線條對(duì)象或補(bǔ)片對(duì)象的句柄。下面通過例4-25來說明contour的用法。

【例4-25】繪制高斯三維分布曲面的等高線及二維等高線。命令如下:

contour(peaks,30)%繪制二維山峰的等高線,等高線的條數(shù)為30

contour3(peaks,20)%繪制三維山峰圖像的等高線,等高線的條數(shù)為20其執(zhí)行結(jié)果如圖4-26(a)、(b)所示。圖4-26等高線繪制好等高線后,可以用函數(shù)clabel標(biāo)注高度值,其調(diào)用格式為:

·clabel(C):將繪制的等高線全部自動(dòng)標(biāo)注,C為等高線矩陣。

·clabel(C,V):自動(dòng)標(biāo)注由向量V確定的若干條等高線的高度值,此處的向量V必須是前面contour命令中V的子集。

·clabel(C,′manual′):手工標(biāo)注等高線高度。

【例4-26】用函數(shù)clabel標(biāo)注山峰的等高線。[C,H]=contour(peaks,20);

clabel(C,H)其執(zhí)行結(jié)果如圖4-27所示。圖4-27等高線的標(biāo)注在MATLAB中,還可以用contourf函數(shù)繪制填充的二維等高線,該函數(shù)的基本用法與函數(shù)contour相同。

【例4-27】繪制填充的二維等高線圖形。[X,Y,Z]=peaks;

contourf(Z,20)其執(zhí)行結(jié)果如圖4-28所示。圖4-28填充的二維等高線圖4.3.6三維視圖可視效果的控制由于三維視圖表現(xiàn)的是一個(gè)空間圖形,因此,從不同的位置和角度觀察圖形有不同的效果。另外,在復(fù)雜的三維圖形中,經(jīng)常會(huì)出現(xiàn)圖形的某一部分被遮住的情況,這會(huì)對(duì)一些問題的分析造成嚴(yán)重的影響。針對(duì)這一問題,在MATLAB中創(chuàng)建了控制視圖可視效果的命令函數(shù)。

1.三維圖形觀察點(diǎn)和視覺的控制函數(shù)view

在MATLAB中,控制圖形觀察點(diǎn)和視覺的函數(shù)是view。其調(diào)用格式如下:

·view(AZ,EL)和view([AZ,EL]):通過方位角和俯視角設(shè)置觀察圖形的視點(diǎn)。其中:AZ為方位角(Azimuth),指在x-y平面內(nèi)從y軸負(fù)方向繞z軸旋轉(zhuǎn)的角度,以逆時(shí)針為正;EL為俯視角(Elevition),指在x-y平面內(nèi)沿z軸方向仰起的角度。

·view([XYZ]): 通過直角坐標(biāo)系設(shè)置視點(diǎn)。

·[AZ,EL]=view:返回當(dāng)前的方位角AZ和俯視角EL?!iew(T):用一個(gè)4×4的轉(zhuǎn)矩陣T來設(shè)置視角。

·T=view:返回當(dāng)前的4×4的轉(zhuǎn)矩陣。注意:

view(2)格式設(shè)置缺省的二維視角。二維圖形缺省值為AZ=0,EL=90。

view(3)格式設(shè)置缺省的三維視角。三維圖形缺省值為AZ=-37.5,EL=30。從MATLAB5.3版本起,其圖形窗口可交互式調(diào)節(jié)視點(diǎn)。為獲得最佳的視覺效果,用戶可先通過鼠標(biāo)操作調(diào)節(jié)視點(diǎn),然后用命令view把相應(yīng)的視點(diǎn)加以固定。若要在MATLAB5.3以前的版本中調(diào)節(jié)視點(diǎn),則必須在先運(yùn)行rotate3d后,才可用鼠標(biāo)進(jìn)行交互式調(diào)節(jié)。

【例4-28】練習(xí)使用函數(shù)view。[X,Y]=meshgrid(-8:0.5:8);

R=sqrt(X.^2+Y.^2)+eps;

Z=sin(R)./R;

subplot(2,2,1)%缺省視角

surf(X,Y,Z)

xlabel(′x軸′,′FontWeight′,′bold′)

ylabel(′y軸′,′FontWeight′,′bold′)

zlabel(′z軸′,′FontWeight′,′bold′)

title(′\fontname{隸書}缺省視角′)

subplot(2,2,2)

surf(X,Y,Z)

xlabel(′x軸′,′FontWeight′,′bold′)

ylabel(′y軸′,′FontWeight′,′bold′)

zlabel(′z軸′,′FontWeight′,′bold′)

title(′\fontname{隸書}方位角為90仰角為0′)

view(90,0)

subplot(2,2,3)

surf(X,Y,Z)

xlabel(′x軸′,′FontWeight′,′bold′)

ylabel(′y軸′,′FontWeight′,′bold′)

zlabel(′z軸′,′FontWeight′,′bold′)

title(′\fontname{隸書}方位角為-37.5仰角為80′)

view(-37.5,80)

subplot(2,2,4)

surf(X,Y,Z)

xlabel(′x軸′,′FontWeight′,′bold′)

ylabel(′y軸′,′FontWeight′,′bold′)

zlabel(′z軸′,′FontWeight′,′bold′)

title(′\fontname{隸書}方位角為0仰角為90′)

view(0,90)

其執(zhí)行結(jié)果如圖4-29所示。圖4-29view函數(shù)使用效果比較圖圖4-29中左上角子窗口就是缺省設(shè)置的效果圖;右上角子窗口是把方位角在x-y平面內(nèi)從y軸負(fù)方向逆時(shí)針旋轉(zhuǎn)90°,轉(zhuǎn)到x軸的正方向,俯視角為0°,即視線從x軸的正方向水平看過去的效果圖;左下角子窗口是把方位角恢復(fù)為缺省值,俯視角為80°,即從斜上方往下看時(shí)的效果圖;右下角子窗口是把方位角設(shè)置為0°,而俯視角為90°,即從正上方往下看時(shí)的效果圖。

2.三維圖形的照相函數(shù)campos

在MATLAB中有一種類似照相機(jī)可變焦透鏡功能的函數(shù),以實(shí)現(xiàn)對(duì)觀察點(diǎn)的控制。實(shí)現(xiàn)這種功能的函數(shù)比較多,此處僅以函數(shù)campos來說明。其調(diào)用格式為:

·CP=campos:得到當(dāng)前句柄照相機(jī)位置。

·campos([X,Y,Z]):設(shè)置照相機(jī)位置。

·campos(mode):得到照相機(jī)位置模式。

【例4-29】照相技術(shù)的應(yīng)用。[X,Y]=meshgrid(-8:0.5:8);

R=sqrt(X.^2+Y.^2)+eps;

Z=sin(R)./R;

surf(X,Y,Z)

xlabel(′x軸′,′FontWeight′,′bold′)

ylabel(′y軸′,′FontWeight′,′bold′)

zlabel(′z軸′,′FontWeight′,′bold′)

title(′\fontname{隸書}照相技術(shù)應(yīng)用′)

campos

campos([36.5,49.0,-10])結(jié)果為:

ans=

-91.3142 -119.0030 6.7452其運(yùn)行結(jié)果如圖4-30所示。圖4-30照相技術(shù)應(yīng)用

3.三維圖形的透視命令hidden在MATLAB中,用mesh命令繪制網(wǎng)格圖時(shí),在默認(rèn)的情況下系統(tǒng)會(huì)消隱掉重疊在后面的網(wǎng)格,而利用透視命令hidden則可以看到被掩蓋的部分。

hidden命令的使用很簡(jiǎn)單,它只是開關(guān)消隱命令。其調(diào)用格式為:

·hiddenon:默認(rèn)模式,消隱掉后面的網(wǎng)格線。

·hiddenoff:關(guān)掉消隱命令,從而能看到被遮擋的部分。

【例4-30】hiddenoff模式的圖形。

mesh(peaks(20))

hiddenoff其執(zhí)行結(jié)果如圖4-31所示。圖4-31網(wǎng)格的消隱圖4.曲面圖形顏色的遮掩函數(shù)shading在MATLAB中,函數(shù)shading用于處理曲面圖而使其形顏色均衡。它有三種濃淡處理方式,其調(diào)用格式分別如下:

·shadingflat:該格式可在每個(gè)網(wǎng)眼上確定一個(gè)標(biāo)志顏色的值。由于相鄰網(wǎng)眼的值相近,因此其顏色也較為相近。

·shadingfacted:該格式是MATLAB的默認(rèn)格式,帶有連接線條,它對(duì)網(wǎng)眼的顏色不做處理,但將加深網(wǎng)線的黑色?!hadinginterp:該格式將在網(wǎng)眼內(nèi)采用內(nèi)插法詳細(xì)計(jì)算網(wǎng)眼內(nèi)不同位置的顏色差異,去掉連接線條,在各片之間使用顏色插值。由此法繪制的圖形的顏色最連貫,著色光順性最好,但也最費(fèi)時(shí)。注意:mesh、surf、pcolor、fill和fill3命令所創(chuàng)建圖形的非數(shù)據(jù)點(diǎn)處的著色由shading命令決定。下面舉一個(gè)例子說明它們的用法。

【例4-31】函數(shù)shading三種濃淡處理方式的比較。

Z=peaks(60);

surf(Z)

shadingflat

figure

surf(Z)

shadingfacted

figure

surf(Z)

shadinginterp其執(zhí)行結(jié)果如圖4-32、圖4-33和圖4-34所示。圖4-32shadingflat效果圖圖4-33shadingfacted效果圖圖4-34shadinginterp效果圖4.3.7三維圖形的照明和材質(zhì)處理

為了把圖形表現(xiàn)得更加真實(shí),MATLAB提供了光源設(shè)置、照明方式和反射光處理的“高層”命令函數(shù),其函數(shù)名稱和含義如表4-2所示。表4-2照明及光源設(shè)置函數(shù)

1.光源的建立

在設(shè)置光照效果之前,首先要建立光源。建立光源的函數(shù)有三種,即light、camlight和lightangle函數(shù)。

(1)light函數(shù)用于建立光源。其調(diào)用格式為:

·light:用缺省值建立光源。

·light(Param1,Value1,…,ParamN,ValueN):建立光源并設(shè)置參數(shù)。

·L=light(…):返回光源對(duì)象的句柄。

(2)camlight函數(shù)用于建立或設(shè)置光源位置,其調(diào)用格式為:

·camlightheadlight:在當(dāng)前坐標(biāo)系中照相機(jī)的位置上建立光源。

·camlightright:在照相機(jī)的右上方建立光源。

·camlightleft:在照相機(jī)的左上方建立光源。

·camlight:同函數(shù)camlightright,在缺省情況下,在照相機(jī)的右上方建立光源。

·camlight(AZ,EL):在相對(duì)照相機(jī)方位角AZ、俯視角EL的位置上建立光源。

·camlight(…,style):設(shè)置光源的類型。類型可以是“l(fā)ocal”(缺省值)或“infinite”。

·camlight(H,…):把指定的光源放在指定的位置上。

·H=camlight(…):返回光源句柄。

(3)lightangle函數(shù)用于在球形坐標(biāo)系中建立光源。其調(diào)用格式為:

·lightangle(AZ,EL):在當(dāng)前坐標(biāo)系中的指定位置上建立光源。

·H=lightangle(AZ,EL):建立光源并返回句柄。

·lightangle(AZ,EL):設(shè)置指定光源的位置。

·[AZ,EL]=lightangle(H):獲取指定光源的位置。

2.照明方式設(shè)置命令lighting為圖形設(shè)置光源后,還要選取合適的照明方式,因?yàn)樵诓煌恼彰鞣绞较?,圖形的效果也不一樣。在MATLAB中,函數(shù)lighting用于設(shè)置照明方式,其調(diào)用格式為:

·lightingflat:均衡圖形每個(gè)小表面的交叉顏色,入射光均勻?yàn)⒙湓趫D形對(duì)象的每個(gè)面上,主要與facted配用,此種格式為缺省值。

·lightingground:對(duì)小表面的交叉顏色作顏色插值,先對(duì)頂點(diǎn)顏色插值,再對(duì)頂點(diǎn)勾畫的面色進(jìn)行插值,用于曲面表現(xiàn)。

·lightingphong:對(duì)小表面的交叉顏色作顏色插值,先對(duì)頂點(diǎn)處法線作插值,再計(jì)算每個(gè)像素的反光。此種格式的表現(xiàn)效果最好,但費(fèi)時(shí)較多。

·lightingnone:關(guān)閉所有光源。注意:lightingnone命令只有在light等設(shè)置光源命令執(zhí)行后才起作用;命令material只能對(duì)由函數(shù)surf、mesh、pcolor、fill和fill3生成的曲面起作用。

3.控制光效果的材質(zhì)命令material設(shè)置光源和照明方式后,為了取得更為逼真的圖形效果,在MATLAB中又提供了控制光效果的材質(zhì)命令函數(shù)material。其調(diào)用格式有以下幾種:

(1)materialshiny:使對(duì)象比較明亮。鏡反射份額較大,反射光顏色僅取決于光源的顏色。

(2)materialdull:使對(duì)象比較暗淡。漫反射份額較大,沒有鏡面亮點(diǎn),反射光顏色僅取決于光源顏色。

(3)materialmetal:使對(duì)象帶金屬光澤。鏡反射份額較大,背景光和漫反射份額很小。反射光顏色取決于光源和圖形表面的顏色。該模式為缺省格式。

(4)materialdefault:返回缺省的模式。

(5)material([kakdksnsc]):對(duì)五大反射要素進(jìn)行設(shè)置。其中:

·ka:設(shè)置無方向性的、均勻的背景光(AmbientLight)強(qiáng)度;

·kd:設(shè)置無方向性的、軟反射的漫反射(DiffuseReflection)強(qiáng)度;

·ks:設(shè)置有硬反射光(SpecularReflection)的強(qiáng)度;

·n:設(shè)置控制鏡面亮點(diǎn)大小的鏡面指數(shù)(SpecularExponent);

·sc:控制鏡面顏色的反射系數(shù)(SpecularColorReflectance)。下面我們舉一個(gè)綜合的例子來說明它們的用法。

【例4-32】繪制一個(gè)球體,使用照明和材質(zhì)處理指令,并比較處理后的效果。

subplot(2,2,1)

sphere

axisequal

shadingfacted

camlightleft

lightingnone

title(′第一子圖′)

subplot(2,2,2)

sphere

axisequal

shadingflat

camlightright

camlightleft

lightingflat

title(′第二子圖′)

subplot(2,2,3)

sphere

axisequal

shadinginterp

camlightright

camlightleft

lightinggouraud

material([0.5,0.3,0.5,10,0.5])

title(′第三子圖′)

subplot(2,2,4)

sphere

axisequal

shadinginterp

light(′position′,[-1,-1,-2],′color′,′y′)

light(′position′,[-1,0.5,1],′style′,′local′,′color′,′r′)

lightingphong

material([0.4,0.5,0.3,10,0.3])

title(′第四子圖′)其執(zhí)行結(jié)果如圖4-35所示。圖4-35使用照明和材質(zhì)命令所表現(xiàn)的圖形從圖4-35中可以看出:每個(gè)子圖可以定義自己的濃淡處理模式、照明模式和材質(zhì),但它們都只能定義一次;每個(gè)子圖可以設(shè)置多個(gè)光源,設(shè)置方式可以是多種。在material命令中,ka、kd、ks對(duì)亮度影響很大,數(shù)值愈大,光愈強(qiáng);參數(shù)n愈大,鏡面亮點(diǎn)的范圍愈小。4.3.8柱面和球面的三維表達(dá)

在MATLAB中,有兩個(gè)用于繪制柱面和球面的命令,即cylinder和sphere函數(shù)。它們可以非常簡(jiǎn)單地繪制漂亮的彩圖。

1.柱面的表達(dá)

與AutoCAD一樣,MATLAB在繪制一個(gè)柱面時(shí),首先要給出它的母線和軸線。而在cylinder命令中,柱面的軸線已經(jīng)定義為z軸,因此只要給出母線的描述就可以完成一個(gè)柱面,再加上參數(shù)就可完成一個(gè)完整的柱面。其調(diào)用格式為:

(1)[X,Y,Z]=cylinder(R,N),其中:

·R是一個(gè)描述柱面母線的向量;

·N是旋轉(zhuǎn)柱面上的分割線條數(shù);

·[X,Y,Z]是cylinder命令執(zhí)行后返回的x、y、z坐標(biāo)向量??梢杂胹urf(X,Y,Z)函數(shù)命令顯示柱面。

(2)[X,Y,Z]=cylinder(R):缺省值N=20。

(3)[X,Y,Z]=cylinder:缺省值N=20,R=[1,1]。

【例4-33】繪制一個(gè)柱面。

t=pi:0.01:3*pi;

r=sin(t)+t;

cylinder(r,30)

shadinginterp其執(zhí)行結(jié)果如圖4-36所示。圖4-36柱面圖

2.球面的表達(dá)由于繪制的球體只是一個(gè)單位球面,因此它比繪制柱面要簡(jiǎn)單。其調(diào)用格式為:

·[X,Y,Z]=sphere(N):此種格式將產(chǎn)生一個(gè)三維的(N+1)×(N+1)的矩陣,然后用函數(shù)surf命令繪制一個(gè)單位的球面。其中N表示設(shè)置分割線的條數(shù)。

·[X,Y,Z]=sphere:此種格式中,缺省值N=20。此命令很少單獨(dú)使用,常和其他的命令一起使用,并且使用簡(jiǎn)單,此處不再舉例。4.4特殊圖形在工程教學(xué)和計(jì)算中,有時(shí)為了將抽象的數(shù)據(jù)表達(dá)得更形象,除了繪制出它的二維、三維以及四維圖形外,還要經(jīng)常用到諸如直方圖、面積圖、射線圖、階梯圖以及火柴桿圖等特殊圖形。

MATLAB提供了很多繪制特殊圖形的命令,如表4-3所示。表4-3繪制特殊圖形命令4.4.1面積圖命令area

在實(shí)際應(yīng)用中,面積圖適用于表現(xiàn)各個(gè)不同部分對(duì)整體所作的貢獻(xiàn),因此其適用范圍很廣。其調(diào)用格式為:

·area(X,Y):該格式的使用方法與plot命令一樣,只不過在繪制過程中,area命令將連線圖到x軸的那部分填上了顏色。·area(Y):該格式的使用方法與area(X,Y)一樣,只是此時(shí)缺省值X=1:SIZE(Y,1)。

·area(X,Y,LEVEL)或area(Y,LEVEL):此種格式與area(X,Y)、area(Y)不同的是,填色部分改為由連線圖到y(tǒng)=level的水平線之間的部分?!纠?-34】繪制一個(gè)面積圖。程序命令如下:

X=-2:2;

Y=[3,5,2,4,1;5,4,2,3,5;3,4,5,2,1];

area(X′,Y′)

legend(′因素l′,′因素2′,′因素3′)

gridon

colormap(spring)其運(yùn)行結(jié)果如圖4-37所示。圖4-37面積圖4.4.2直方圖命令bar

直方圖常用來統(tǒng)計(jì)數(shù)據(jù)。函數(shù)bar、bar3、barh和bar3h的調(diào)用格式類似,這里以函數(shù)bar為例進(jìn)行說明。其調(diào)用格式為:

·bar(X,Y):X是橫坐標(biāo)向量,Y可以是向量或矩陣。Y是向量時(shí),每一個(gè)元素對(duì)應(yīng)一個(gè)堅(jiān)條;Y是m行n列矩陣時(shí),將畫出m組豎條,每組包括n個(gè)豎條。

·bar(Y):橫坐標(biāo)使用缺省值X=l:M。

·bar(X,Y,WIDTH)或bar(Y,WIDTH):用WIDTH指定堅(jiān)條的寬度,如果WIDTH>1,則條與條之間將重合。缺省寬度為0.8。

·bar(…,′grouped′):產(chǎn)生缺省的組合直方圖。

·bar(…,′stacked′):產(chǎn)生直方圖。

·bar(…,′linespec′):指定直方圖豎條的顏色。

·H=bar(…):返回補(bǔ)片對(duì)象的句柄。下面通過例子來說明其用法。

【例4-35】用繪制直方圖的幾種命令繪制直方圖。

X=-2:2;

Y=[3,5,2,4,1;5,4,2,3,5;3,4,5,2,1];

subplot(2,2,1)

bar(X,Y,′r′)

xlabel(′x′)

ylabel(′y′)

colormap(cool)

subplot(2,2,2)

barh(X,Y,′grouped′)

xlabel(′y′)

ylabel(′x′)

colormap(cool)

subplot(2,2,3)

bar(X,Y,′stacked′)

xlabel(′x′)

ylabel(′\Sigmay′)

colormap(spring)

subplot(2,2,4)

barh(X,Y,′stacked′)

xlabel(′y′)

ylabel(′\Sigmax′)

colormap(summer)其執(zhí)行結(jié)果如圖4-38所示。圖4-38二維直方圖

【例4-36】繪制三維直方圖。

X=-2:2;

Y=[3,5,2,4,1;5,4,2,3,5;3,4,5,2,1];

subplot(2,2,1)

bar3(X,Y,′r′)

zlabel(′y′)

ylabel(′x′)

colormap(cool)

subplot(2,2,2)

bar3h(X,Y,′grouped′)

ylabel(′x′)

zlabel(′y′)

colormap(cool)

subplot(2,2,3)

bar3(X,Y,′stacked′)

ylabel(′x′)

zlabel(′\Sigmay′)

colormap(spring)

subplot(2,2,4)

bar3h(X,Y,′stacked′)

zlabel(′x′)

ylabel(′\Sigmay′)

colormap(summer)其執(zhí)行結(jié)果如圖4-39所示。注意:畫好的直方圖同樣可以用set和get函數(shù)設(shè)置其狀態(tài),而且可以用shading命令設(shè)置顏色的平滑方式。圖4-39三維直方圖4.4.3餅圖命令pie餅圖又叫扇形圖,主要用于顯示向量中元素所占向量元素總和的百分比。在MATLAB中實(shí)現(xiàn)此功能的函數(shù)是pie和pie3,它們分別用于繪制二維和三維餅圖。因?yàn)槎叩挠梅ㄏ嗨疲詢H以函數(shù)pie為例,說明它們的調(diào)用格式:

·pie(X):繪制向量X的餅圖。該命令將把X的每一個(gè)元素在所有元素總和中占的比例表達(dá)出來。

·pie(X,EXPLODE): 向量EXPLODE用于指定餅圖中抽出一部分的塊,它和向量X必須長(zhǎng)度相等。向量EXPLODE中的非零值對(duì)應(yīng)的塊將被抽出。

·pie(…,LABELS): LABELS是用于標(biāo)注餅圖的字符串?dāng)?shù)組,其長(zhǎng)度必須和向量X相等。

·H=pie(…):返回包括補(bǔ)片和文本對(duì)象句柄的向量。

【例4-37】用函數(shù)pie和pie3繪制餅圖。

x=[200,360,120,400,320];

subplot(2,2,1),pie(x,[00010])

subplot(2,2,2),pie3(x,[00010])

subplot(2,2,3),pie(x(2:5))

subplot(2,2,4),x=[0.1,0.12,0.21,0.34,0.11];pie3(x,{′A′,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論