計(jì)算機(jī)仿真技術(shù)與CAD-基于MATLAB的電氣工程(第2版) 課件 第4章MATLAB圖形處理_第1頁
計(jì)算機(jī)仿真技術(shù)與CAD-基于MATLAB的電氣工程(第2版) 課件 第4章MATLAB圖形處理_第2頁
計(jì)算機(jī)仿真技術(shù)與CAD-基于MATLAB的電氣工程(第2版) 課件 第4章MATLAB圖形處理_第3頁
計(jì)算機(jī)仿真技術(shù)與CAD-基于MATLAB的電氣工程(第2版) 課件 第4章MATLAB圖形處理_第4頁
計(jì)算機(jī)仿真技術(shù)與CAD-基于MATLAB的電氣工程(第2版) 課件 第4章MATLAB圖形處理_第5頁
已閱讀5頁,還剩67頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1本章內(nèi)容

MATLAB的基本繪圖命令;

MATLAB的基本繪圖命令;

MATLAB的圖形控制命令;

MATLAB的圖形修飾命令;

MATLAB的圖像、聲音與動畫處理命令。第4章MATLAB圖形處理2MATLAB受到控制界廣泛接受的另一個(gè)重要原因是因?yàn)樗峁┝耸址奖愕囊幌盗欣L圖命令。例如線性坐標(biāo)、對數(shù)坐標(biāo)、半對數(shù)坐標(biāo)及極坐標(biāo)等命令,它還允許用戶同時(shí)打開若干圖形窗口,對圖形進(jìn)行標(biāo)注文字說明等,它使得圖形繪制和處理的復(fù)雜工作變得簡單得令人難以置信。34.1.1二維圖形的繪制1.利用函數(shù)繪制二維圖形在MATLAB中,最基本的二維圖形的繪圖函數(shù)為plot(),其他的繪制函數(shù)都是以plot()為基礎(chǔ)的,而且調(diào)用格式都和該函數(shù)類似。因此,在本小節(jié)將詳細(xì)介紹plot()的使用方法。4.1二維圖形

在MATLAB中,二維圖形和三維圖形在繪制方法上有較大的差別。相對而言,繪制二維圖形比三維圖形要簡單。4(1)基本形式

MATLAB最基本的繪圖函數(shù)為plot()。如果y是一個(gè)n維向量,那么plot(y)繪制一個(gè)y元素和y元素排列序號1,2,…,n之間關(guān)系的線性坐標(biāo)圖。如果y是一個(gè)n

m維矩陣,那么plot(y)將同時(shí)繪制出每列元素與其排列序號1,2,…,n之間關(guān)系的m條曲線。5例如>>y=[00.480.8410.910.60.14];>>plot(y)則顯示如圖4-1所示曲線。6

如果x和y是兩個(gè)等長向量,那么plot(x,y)將繪制一條x和y的之間關(guān)系的線性坐標(biāo)圖。例如>>x=0:0.01:2*pi;y=sin(x);plot(x,y)則顯示如圖4-2所示曲線。7(2)多重線型

在同一圖形中可以繪制多重線型,基本命令格式為plot(x1,y1,x2,y2,…,xn,yn)

以上命令可將x1對y1,x2對y2,…,xn對yn的圖形繪制在一個(gè)圖形中,而且分別采用不同的顏色或線型。8圖4-3例如以下命令可顯示如圖4-3所示曲線。>>x=0:0.1:2*pi;plot(x,sin(x),x,cos(x))92.利用鼠標(biāo)繪制圖形

MATLAB允許利用鼠標(biāo)來點(diǎn)選屏幕點(diǎn),命令格式為

[x,y,button]=ginput(n)其中n為選擇點(diǎn)的數(shù)目,返回的x,y

向量分別存儲被點(diǎn)中的n個(gè)點(diǎn)的坐標(biāo),而button亦為一個(gè)n維向量,它的各個(gè)分量為鼠標(biāo)鍵的標(biāo)號,如button(i)=1,則說明第i次按下的是鼠標(biāo)左鍵,而該值為2或3則分別對應(yīng)于中鍵和右鍵。10

例4-1用鼠標(biāo)左鍵繪制折線,同時(shí)在鼠標(biāo)左鍵點(diǎn)中的位置輸出一個(gè)含有該位置信息的字符串,利用鼠標(biāo)中鍵或右鍵中止繪制。解

MATLAB程序

%ex4_1.mclf;axis([0,10,0,5]);holdon;x=[];y=[];fori=1:100[x1,y1,button]=ginput(1);chstr=['(',num2str(x1),',',num2str(y1),')'];text(x1,y1,chstr);x=[x,x1];y=[y,y1];line(x,y)if(button~=1);break;endendholdoff111.圖形修飾及文本標(biāo)注

MATLAB中對于同一圖形中的多重線,不僅可分別定義其線型,而且可分別選擇其顏色,帶有選項(xiàng)的曲線繪制命令的調(diào)用格式為

plot(x1,y1,選項(xiàng),x2,y2,選項(xiàng)2,…,xn,yn,選項(xiàng)n)其中x1,x2,…,xn為x軸變量,y1,y2,…,yn為y軸變量,選項(xiàng)如下表4-1所示。4.1.2二維圖形的修飾12選項(xiàng)意義選項(xiàng)意義-實(shí)線.用點(diǎn)號繪制各數(shù)據(jù)點(diǎn)––虛線×叉號線—.點(diǎn)劃線。圓圈線:點(diǎn)線*星號線y黃色g綠m洋紅色b藍(lán)c青色w白r紅k黑表4-1MATLAB的繪圖命令的各種選項(xiàng)

13

上表中的線型和顏色選項(xiàng)可以同時(shí)使用,例如>>

x=0:0.1:2*pi;>>plot(x,sin(x),’-g’,x,cos(x),’-.r’)14

繪制完曲線后,MATLAB還允許用戶使用它提供的特殊繪圖函數(shù)來對屏幕上已有的圖形加注釋、題頭或坐標(biāo)網(wǎng)格。例如>>

x=0:0.1:2*pi;y=sin(x);plot(x,y)>>title(‘FigureExample’)%給出題頭>>xlabel(‘Thisisxaxis’)%x軸的標(biāo)注>>ylabel(‘Thisisyaxis’)%y軸的標(biāo)注>>grid%增加網(wǎng)格>>legand(‘sin(x)’)%加圖例15

除了在標(biāo)準(zhǔn)位置書寫標(biāo)題和軸標(biāo)志以外,MATLAB還允許在圖形窗口的位置利用line()和text()命令畫直線或?qū)懽址?,它們的調(diào)用格式分別為

line(x,y)和text(x,y,chstr,選項(xiàng))其中l(wèi)ine()函數(shù)在給定的圖形窗口上繪制一條由向量x和y定義的折線,text()函數(shù)是在指定的點(diǎn)(x,y)處寫一個(gè)chstr繪出的字符串,而選項(xiàng)決定x,y坐標(biāo)的單位,如選項(xiàng)為’sc’,則x,y表示規(guī)范化的窗口相對坐標(biāo),其范圍為0到1,即左下角坐標(biāo)為(0,0),而右上角的坐標(biāo)為(1,1)。

16

用text()命令可以在圖形中的任意位置加上文本說明,但是必須知道其位置坐標(biāo),而利用另一個(gè)函數(shù)gtext(),則可以用鼠標(biāo)來對要添加的文本字符串定位。在MATLAB的工作空間中鍵入下列命令>>gtext(‘sin(x)’)

那么在圖中,將會出現(xiàn)一個(gè)十字叉,用鼠標(biāo)拖動它到添加文本的位置,單擊鼠標(biāo),gtext()命令中的文本字符串sin(x)就自動添加到指定的位置。172.圖形控制

MATLAB允許將一個(gè)圖形窗口分割成n×m部分,對每一部分可以用不同的坐標(biāo)系單獨(dú)繪制圖形,窗口分割命令的調(diào)用格式為

subplot(n,m,k)其中n,m分別表示將這個(gè)圖形窗口分割的行列數(shù),k表示每一部分的代號,例如想將窗口分割成4×3個(gè)部分,則右下角的代號為12,MATLAB最多允許9×9的分割。18

盡管MATLAB可以自動根據(jù)要繪制曲線數(shù)據(jù)的范圍選擇合適的坐標(biāo)系,使得曲線能夠盡可能清晰地顯示出來,但是,如果覺得自動選擇的坐標(biāo)還不合適時(shí),還可以用手動的方式來選擇新的坐標(biāo)系,調(diào)用函數(shù)的格式為

axis([xmin,xmax,ymin,ymax])

另外,MATLAB還提供了清除圖形窗口命令clg、保持當(dāng)前窗口的圖形命令hold、放大和縮小窗口命令zoom等。194.1.3二維特殊圖形除了基本的繪圖命令plot()外,MATLAB還允許繪制極坐標(biāo)曲線、對數(shù)坐標(biāo)曲線、條形圖和階梯圖等,其常用的函數(shù)如表4-2所示。函數(shù)名意義常用調(diào)用格式函數(shù)名意義常用調(diào)用格式polar()極坐標(biāo)圖polar(x,y)semilogx()x-半對數(shù)圖semilogx(x,y)semilogy()y-半對數(shù)圖semilogy(x,y)loglog()對數(shù)圖logog(x,y)bar()二維條形圖bar(x,y)stairs()階梯圖stairs(x,y)comet()彗星狀軌跡圖comet(x,y)compass()羅盤圖compass(x,y)quiver()磁力線圖quiver(x,y)stem()火柴桿圖stem(x,y)feather()羽毛狀圖feather(x,y)fill()二維填充函數(shù)fill(x,y,c)errorbar()誤差限圖errorbar(x,y,ym,yM)hist()直方圖hist(y,n)表4-2特殊二維曲線繪制函數(shù)201.極坐標(biāo)曲線極坐標(biāo)曲線繪制函數(shù)的調(diào)用格式為polar(theta,rho,選項(xiàng))其中,theta和rho分別為長度相同的角度向量和幅值向量;選項(xiàng)的內(nèi)容和plot()函數(shù)的基本一致。212.對數(shù)和半對數(shù)曲線

對數(shù)和半對數(shù)曲線繪制函數(shù)的調(diào)用格式分別為

semilogx(x,y,選項(xiàng))

%繪制橫軸為對數(shù)標(biāo)度的圖形,選項(xiàng)同plot()semilogy(x,y,選項(xiàng))

%繪制縱軸為對數(shù)標(biāo)度的圖形,選項(xiàng)同plot()loglog(x,y,選項(xiàng))

%繪制兩個(gè)軸均為對數(shù)標(biāo)度的圖形函數(shù)semilogx()僅對橫坐標(biāo)進(jìn)行對數(shù)變換,而縱坐標(biāo)仍保持線性坐標(biāo);而semilogy()只對縱坐標(biāo)進(jìn)行對數(shù)變換,而橫坐標(biāo)仍保持線性坐標(biāo);loglog()則分別對橫縱坐標(biāo)都進(jìn)行對數(shù)變換(最終得出全對數(shù)坐標(biāo)的曲線來)。選項(xiàng)的定義與plot()函數(shù)的完全一致。22例4-2

利用圖形窗口分割方法將下列極坐標(biāo)方程ρ=cos(θ/3)+1/9用四種繪圖方式畫在不同的窗口中。解

MATLAB程序

%ex4_2.mtheta=0:0.1:6*pi;rho=cos(theta/3)+1/9;subplot(2,2,1);polar(theta,rho);subplot(2,2,2);plot(theta,rho);subplot(2,2,3);semilogx(theta,rho);gridsubplot(2,2,4);hist(rho,15)則顯示如圖4-4所示曲線。23圖4-424

與線性坐標(biāo)向量的選取不同,在MATLAB下還給出了一個(gè)實(shí)用的函數(shù)logspace()按對數(shù)等間距的分布來產(chǎn)生一個(gè)向量,該函數(shù)的調(diào)用格式為x=logspace(n,m,z)其中10n和10m分別表示向量的起點(diǎn)和終點(diǎn),而z表示需要產(chǎn)生向量點(diǎn)個(gè)數(shù),當(dāng)這參數(shù)忽略時(shí),z將采用默認(rèn)值50。254.1.4二維函數(shù)圖形

MATLAB還允許調(diào)用函數(shù)fplot()或ezplot()來直接繪制出函數(shù)的圖形,其函數(shù)的調(diào)用格式為fplot(f,[a,b],N)和ezplot(f,g,[a,b],N)其中,f,g為函數(shù)名,它既可為自定義的任意M函數(shù),也可為基本數(shù)學(xué)函數(shù);[a,b]為繪圖區(qū)間;N為點(diǎn)數(shù),默認(rèn)時(shí)將取N=25。例如繪制如圖3-2所示的正弦函數(shù)在一個(gè)周期內(nèi)的曲線,可采用如下命令

>>fplot('sin',[0,2*pi])26

利用函數(shù)ezplot()可以直接繪制隱函數(shù)曲線,隱函數(shù)即滿足f(x,y)=0方程的x,y之間的關(guān)系式。因?yàn)楹芏嚯[函數(shù)無法求出x,y之間的關(guān)系,所以無法先定義一個(gè)x向量再求出相應(yīng)的y向量,從而不能采用plot()函數(shù)來繪制其曲線。另外,即使能求出x,y之間的顯式關(guān)系,但不是單值繪制,則繪制起來也是很麻煩的。27

例4-3試?yán)L制隱函數(shù)的曲線。

MATLAB命令如下。>>ezplot('x^2*sin(x+y^2)+y^2*exp(x+y)+5*cos(x^2+y)')

執(zhí)行以上MATLAB命令,結(jié)果顯示如圖4-5所示曲線。284.2三維圖形在MATLAB中,盡管二維繪圖和三維繪圖在很多地方是一致的,但是三維圖形在很多方面是二維圖形沒有涉及的。因此,本節(jié)將詳細(xì)介紹三維圖形的繪制方法。294.2.1三維圖形的繪制1.三維曲線的繪制與二維圖形相對應(yīng),MATLAB提供了plot3()函數(shù),它允許在一個(gè)三維空間內(nèi)繪制出三維的曲線,該函數(shù)的調(diào)用格式為

plot3(x,y,z,選項(xiàng))其中x,y,z為維數(shù)相同的向量,分別存儲曲線的三個(gè)坐標(biāo)的值,選項(xiàng)的意義同plot()函數(shù)。例利用以下命令,可得到圖4-6所示曲線。>>t=0:pi/50:10*pi;plot3(sin(t),cos(t),t)30圖4-6312.三維曲面的繪制在繪制三維曲線時(shí),除了需要繪制單根曲線外,通常還需要繪制三維曲線的網(wǎng)格圖和表面圖,即三維曲面圖。在MATLAB中,他們對應(yīng)的函數(shù)分別為mesh()函數(shù)和surf()函數(shù)。32如果已知二元函數(shù),則可以繪制出該函數(shù)的三維曲線的網(wǎng)格圖和表面圖。在繪制三維圖之前,應(yīng)該先調(diào)用meshgrid()函數(shù)生成網(wǎng)格矩陣數(shù)據(jù)x和y,然后可以按函數(shù)公式用點(diǎn)運(yùn)算的方式計(jì)算出z矩陣,最后就可以用mesh()函數(shù)和surf()函數(shù)進(jìn)行三維圖形繪制了。他們的調(diào)用格式分別為

mesh(x,y,z,c)和surf(x,y,z,c)其中,x,y,z分別構(gòu)成該曲面的x,y和z向量;c為顏色矩陣,表示在不同的高度下的顏色范圍,如果省略此選項(xiàng),則會自動地假定c=z,亦顏色的設(shè)定是正比于圖形的高度的,這樣就可以得出層次分明的三維圖形來。33例4-4試?yán)L制二元函數(shù)的曲線。解

MATLAB命令如下。>>[x,y]=meshgrid(-3:0.1:3,-2:0.1:2);>>z=(x.^2-2*x).*exp(-x.^2-y.^2-x.*y);mesh(x,y,z)執(zhí)行以上命令便可得到圖4-7所示曲線。34關(guān)于三維圖形的繪制,常用的其他命令有

surf(x,y,z)%繪制三維表面圖形

surfc(x,y,z)%繪制帶有等高線的三維表面圖形

surf1(x,y,z)%繪制帶有陰影的三維表面圖形

waterfall(x,y,z)%繪制瀑布形三維圖形

contour(x,y,z)%等高線圖形。354.2.2三維圖形的修飾對于三維圖形,除了可以像二維圖形那樣編輯線型、顏色外,還可以編輯三維圖形的視角、材質(zhì)和照明等。

1.三維圖形的旋轉(zhuǎn)

MATLAB三維圖形顯示中提供了修改視角的功能,允許用戶從任意的角度觀察三維圖形,實(shí)現(xiàn)視角轉(zhuǎn)換有兩種方法:其一是使用圖形窗口工具欄中提供的三維圖形轉(zhuǎn)換按鈕來可視地對圖形進(jìn)行旋轉(zhuǎn);其二是用view()函數(shù)和rotate()函數(shù)有目的地進(jìn)行旋轉(zhuǎn)。36(1)視角控制函數(shù)view()

可以利用函數(shù)view()來改變圖形的觀察點(diǎn),該函數(shù)的調(diào)用格式為view(Az,E1)其中,方位角Az為視點(diǎn)在x-y平面投影點(diǎn)與y軸負(fù)方向之間的夾角,默認(rèn)值為-37.5

;仰角E1為視點(diǎn)和x-y平面的夾角,默認(rèn)值為30

。例如,俯視圖可以由view(0,90)來設(shè)置;正視圖可以由view(0,0)來設(shè)置;側(cè)視圖可以由view(90,0)來設(shè)置。37例4-5試在同一窗口中繪制二元函數(shù)曲面的三視圖和三維表面圖形。解

MATLAB命令如下。>>[x,y]=meshgrid(-3:0.1:3,-2:0.1:2);>>z=(x.^2-2*x).*exp(-x.^2-y.^2-x.*y);>>subplot(2,2,1);surf(x,y,z);view(0,90);>>subplot(2,2,2);surf(x,y,z);view(90,0);>>subplot(2,2,3);surf(x,y,z);view(0,0);>>subplot(2,2,4);surf(x,y,z);執(zhí)行以上命令便可得到圖4-8所示曲線。3839(2)旋轉(zhuǎn)控制函數(shù)rotate()

和前面的函數(shù)view()不同,函數(shù)rotate()則通過旋轉(zhuǎn)變換改變原來圖形對象的數(shù)據(jù),將圖形旋轉(zhuǎn)一個(gè)角度。而函數(shù)view()則沒有改變原始數(shù)據(jù),只是改變視角。函數(shù)rotate()的調(diào)用格式為rotate(h,diretion,alpha)其中,參數(shù)h為被旋轉(zhuǎn)對象;參數(shù)diretion有兩種設(shè)置方法:球坐標(biāo)設(shè)置法,將其設(shè)置為[theta,phi],其單位是“°”(度);直角坐標(biāo)法,其設(shè)置為[x,y,z];參數(shù)alpha為旋轉(zhuǎn)角度,方向按照右手法。40例4-6試在MATLAB中利用函數(shù)rotate()旋轉(zhuǎn)三維圖形。解

MATLAB命令如下。>>subplot(1,2,1);z=peaks(25);surf(z);title('Default');>>subplot(1,2,2);h=surf(z);title('Rotated');>>rotate(h,[-2,-2,0],30,[2,2,0]);colormapcool執(zhí)行以上命令便可得到圖4-9所示曲線。41

由以上兩例可知,使用函數(shù)view()旋轉(zhuǎn)的是坐標(biāo)軸,而使用函數(shù)rotate()旋轉(zhuǎn)的是圖形對象本身,其坐標(biāo)軸保持不變。

(3)動態(tài)旋轉(zhuǎn)控制命令rotate3d

在MATLAB中,還提供了一個(gè)動態(tài)旋轉(zhuǎn)命令rotate3d。使用該命令可以動態(tài)調(diào)整圖形的視角,直到用戶覺得合適為止,而不自行輸入輸入視角的角度參數(shù)。下面通過一個(gè)簡單的例子來說明如何使用該命令。42例4-7試在MATLAB中利用命令rotate3d旋轉(zhuǎn)三維圖形的視角。解

MATLAB命令如下。>>surf(peaks(40));rotate3d;

(a)旋轉(zhuǎn)前(b)旋轉(zhuǎn)后43

執(zhí)行前一條命令surf(peaks(40))便可得到圖4-10(a)所示三維圖形。執(zhí)行后一條命令rotate3d,則在圖4-10(a)中出現(xiàn)一個(gè)旋轉(zhuǎn)的圖標(biāo),此時(shí)可在圖形窗口的區(qū)域中,按住鼠標(biāo)的左鍵來調(diào)節(jié)圖形的視角,并將當(dāng)前圖形的視角數(shù)值顯示在圖形窗口的下方,如圖4-10(b)所示。如對于旋轉(zhuǎn)后的圖4-10(b),其方位角和仰角分別為Az=40,E1=-8。442.

三維圖形的顏色控制圖形的色彩是圖形的主要表現(xiàn)因素,豐富的顏色變化可以讓圖形更具有表現(xiàn)力。在MATLAB中,提供了多種色彩控制命令,這些命令分別適用于不同的環(huán)境,可以對整個(gè)圖形中的所有因素進(jìn)行顏色設(shè)置。

(1)背景顏色設(shè)置在MATLAB中,設(shè)置圖形背景顏色的函數(shù)是colordef(),該命令的調(diào)用格式為

colordefwhite%將圖形的背景顏色設(shè)置為白色;

colordefblack%將圖形的背景顏色設(shè)置為黑色;

colordefnone%圖形背景和圖形窗口顏色設(shè)置為默認(rèn);

colordef(fig,color_option)%將圖形句柄fig的背景顏色設(shè)置由color_option設(shè)置的顏色。45(2)圖形顏色設(shè)置

MATLAB采用顏色映像來處理圖形顏色,就是RGB色系。在MATLAB中,每種顏色都是由三個(gè)基色的數(shù)組表示的。數(shù)組元素R、G和B在平[0,1]區(qū)間取值,分別表示顏色中的紅、綠、藍(lán)三種基色的相對亮度。通過對R、G和B大小的設(shè)置,可以調(diào)制出不同的顏色。當(dāng)調(diào)制好相應(yīng)的顏色后,就可以使用函數(shù)colormap()來設(shè)置圖形的顏色,該命令的調(diào)用格式為colormap([R,G,B])其中,[R,G,B]是一個(gè)三列矩陣,行數(shù)不限,這個(gè)矩陣就是所謂的色圖矩陣。在MATLAB中每一個(gè)圖形只能有一個(gè)色圖。色圖可以通過矩陣元素的直接賦值來定義,也可以按照某個(gè)數(shù)據(jù)規(guī)律產(chǎn)生。46

MATLAB中預(yù)定義了一些色圖矩陣CM,如表4-3所示。它們的維度由其調(diào)用格式來決定:CM%返回維度為64

3的色圖矩陣;CM(m)%返回維度為m3的色圖矩陣。表4-3色圖矩陣CM名稱意義名稱意義autumn紅、黃色圖bone紅、黃色圖cool青、品紅濃淡色圖copper純銅色調(diào)濃淡色圖gray灰色調(diào)濃淡色圖hot黑紅黃白色圖hsv飽和色圖jet藍(lán)頭紅尾飽和色圖47

例如利用以下命令,就可以設(shè)置圖形的顏色為青、品紅濃淡色,如圖4-11所示。

>>surf(peaks(100));colormap(cool(512));圖4-11顏色為青品紅濃淡色的三維圖48

在MATLAB中,除了colormap()函數(shù)外,還提供了多個(gè)用于設(shè)置圖形中其他元素的函數(shù)命令,如caxis和colorbar,其中caxis命令的主要功能是設(shè)置數(shù)軸的顏色;colorbar命令的主要功能是顯示指定顏色刻度的顏色標(biāo)尺。他們常用的調(diào)用格式為caxis([cmin,cmax])%在[cmin,cmax]范圍內(nèi)與色圖矩陣中的色值相對應(yīng),并依次為圖形著色;caxisauto%自動計(jì)算出色值的范圍;caxismanual%按照當(dāng)前的色值范圍來設(shè)置色圖范圍;colorbar%在圖形右側(cè)顯示一個(gè)垂直的顏色標(biāo)尺;colorbar(‘vert’)%添加一個(gè)垂直的顏色標(biāo)尺到當(dāng)前的坐標(biāo)系中;colorbar('horiz')%添加一個(gè)水平的顏色標(biāo)尺到當(dāng)前的坐標(biāo)系中。49(3)圖形著色設(shè)置在MATLAB中,除了可以為圖形設(shè)置不同的顏色外,還可以設(shè)置顏色的著色方式。對于繪圖命令mesh、surf、pcolor和fill等創(chuàng)建的圖形非數(shù)據(jù)處的著色,可利用shading命令,他的調(diào)用格式為

shadingflat%使用平滑方式為圖形著色;

shadinginterp%使用平滑方式為圖形著色;

shadingfaceted%使用平滑方式為圖形著色。另外在MATLAB中,除了使用函數(shù)alpha()設(shè)置曲面數(shù)據(jù)點(diǎn)的透明度外,MATLAB還提供了函數(shù)alim()來設(shè)置透明度的上下限。503.

三維圖形的消隱與透視在三維空間中繪制多個(gè)圖形時(shí),由于圖形之間要相互覆蓋,就涉及到消隱與透視的問題,消隱是指圖形間相互重疊的部分不再顯示,透視是指相互重疊的部分互不妨礙,全面顯示。

hiddenon%圖形間消隱,為默認(rèn)值

hiddenoff%圖形間透視例如利用以下命令,就可以得到如圖4-12所示的圖形。>>sphere;[x0,y0,z0]=sphere;>>x=2*x0;y=2*y0;z=2*z0;>>surf(x0,y0,z0);>>holdon;mesh(x,y,z);>>hiddenoff;axisequal51

4.2.3三維特殊圖形除了基本的繪圖命令plot3()和mesh()和surf()外,MATLAB還提供很多繪制三維圖形的函數(shù),其常用的函數(shù)如表4-4所示。表4-4特殊三維圖形繪制函數(shù)函數(shù)名意義函數(shù)名意義bar3()三維垂直條形圖slice()三維切片圖bar3h()三維水平條形圖contourslice()三維切面等位線圖pie3()三維餅圖streamslice()三維流線切面線圖contour3()三維等高線waterfall()三維瀑布形圖stem3()三維針圖52

4.2.4三維函數(shù)圖形與繪制二維函數(shù)圖形類似,在MATLAB中,繪制三維函數(shù)的圖形,同樣也有一些簡易命令。和三維繪圖常見的各種命令相對應(yīng),三維圖形的簡易函數(shù)包括有ezmesh()、ezmeshc()、ezsurf()和ezsurfc()等。他們的調(diào)用格式與二維圖形的簡易函數(shù)調(diào)用格式相似。53

例4-8試?yán)L制

的曲面線及等高線。解

MATLAB命令如下。

>>ezmeshc('y/(1+x^2+y^2)',[-5,5,-2*pi,2*pi])>>colormapcool

執(zhí)行以上MATLAB命令,結(jié)果顯示如圖4-13所示曲線。544.3四維圖形對于三維圖形,在MATLAB中可以利用的函數(shù)關(guān)系來繪制圖形。該函數(shù)的自變量只有兩個(gè),從自變量的角度來講,就是二維的。但在實(shí)際生活和工程應(yīng)用中,有時(shí)會遇到自變量個(gè)數(shù)為3的情況,這時(shí)自變量的定義域就是整個(gè)三維空間。而計(jì)算機(jī)是有顯示維度的,它僅能顯示三個(gè)空間的變量,不能表示第四維的空間變量。對于這種矛盾關(guān)系,MATLAB采用了顏色、等位線等手段來表示第四維的變量。55

在MATLAB中,使用slice()等相關(guān)函數(shù)來顯示三維函數(shù)的切面圖和等位線圖,他們可以很方便地實(shí)現(xiàn)函數(shù)上的思維表現(xiàn),slice()函數(shù)的常用調(diào)用格式為

slice(v,sx,sy,sz)%顯示三元函數(shù)所確定的超立體形,在x,y和z三個(gè)坐標(biāo)軸方向上的若干點(diǎn)的切片圖,各點(diǎn)坐標(biāo)軸由數(shù)量向量sx,sy和sz來指定;

slice(x,y,z,v,sx,sy,sz)%顯示三元函數(shù)所確定的超立體形,在x,y和z三個(gè)坐標(biāo)軸方向上的若干點(diǎn)的切片圖。也就說,如果函數(shù)有一個(gè)變量x取值x0,則函數(shù)變成一立體曲面的切片圖。各點(diǎn)坐標(biāo)軸由數(shù)量向量sx,sy和sz來指定;56slice(v,XI,YI,ZI)%顯示由參數(shù)矩陣XI,YI和ZI確定的超立體圖形的切片圖。參數(shù)矩陣XI,YI和ZI定義了一個(gè)曲面,同時(shí)會在曲面的點(diǎn)上計(jì)算超立體v的值。

slice(

,'method')%參數(shù)method用來指定內(nèi)插值的方法。常見的方法包括有l(wèi)inear、cubic和nearest等,分別對應(yīng)不同的插值方法。與slice()相關(guān)的函數(shù)還有contourslice()和streamslice()等,他們分別可繪制出不同的切片圖形。下面以三個(gè)例子來說明他們的使用方法。57例4-9在MATLAB中,繪制水體水下射流速度數(shù)據(jù)flow的切片圖。解

MATLAB命令如下。>>[x,y,z,v]=flow;x1=min(min(min(x)));x2=max(max(max(x)));>>sx=linspace(x1+1.5,x2,4);slice(x,y,z,v,sx,0,0)>>shadinginterp;colormaphsv;alpha('color');colorbar執(zhí)行以上MATLAB命令,結(jié)果顯示如圖4-14所示曲線。58例4-10在MATLAB中,繪制水體水下射流速度數(shù)據(jù)flow的切面等位線圖。解

MATLAB命令如下。>>[x,y,z,v]=flow;x1=min(min(min(x)));x2=max(max(max(x)));>>v1=min(min(min(v)));v2=max(max(max(v)));>>cv=linspace(v1+1,v2,20);sx=linspace(x1+1.5,x2,4);>>contourslice(x,y,z,v,sx,0,0,cv);>>view([-12,30]);colormapcool;boxon;colorbar執(zhí)行以上MATLAB命令,結(jié)果顯示如圖4-15所示曲線。59例4-11在MATLAB中,繪制函數(shù)peaks的流線切面圖。解

MATLAB命令如下。>>clear;z=peaks;surf(z);shadinginterp;holdon;>>[cch]=contour3(z,20);set(ch,'edgecolor','b');>>[u,v]=gradient(z);h=streamslice(-u,-v);set(h,'color','k');>>fori=1:length(h);zi=interp2(z,get(h(i),'x'),get(h(i),'y'));set(h(i),'z',zi);end>>colormaphsv;view(30,50);axistight;colorbar執(zhí)行以上MATLAB命令,結(jié)果顯示如圖4-16所示曲線。604.4圖像與動畫

MATLAB提供了強(qiáng)大的圖像與動畫處理函數(shù),而這里由于篇幅限制,僅介紹簡單的入門知識。

4.4.1圖像處理在MATLAB中,圖像處理工具箱提供了圖像處理的強(qiáng)大功能。下面僅簡單介紹幾個(gè)常用的函數(shù)。611.讀圖像文件圖像文件讀取函數(shù)為imread()其調(diào)用格式為W=imread(文件名)

該命令將文件中的圖像讀入MATLAB工作空間,生成8位無符號整型三維數(shù)組W,其中W(:,:,1),W(:,:,2)和W(:,:,3)分別對應(yīng)于彩色圖像的紅色、綠色和藍(lán)色分量。如果文件中存儲的是灰度圖像,則W為矩陣,存儲圖像的像素值。

622.圖像顯示

MATLAB及其圖像處理工具箱中提供了多個(gè)圖像顯示函數(shù),如image(),imview(),imshow()和imtool(),它們各有特色。3.圖像寫回到文件

MATLAB可利函數(shù)imwrite()把數(shù)值矩陣代表的圖像數(shù)據(jù)寫回為標(biāo)準(zhǔn)格式的圖像文件,其調(diào)用格式為imwrite(W,文件名)63

例如利用以下MATLAB命令,可以讀取圖像文件P1.JPG,并將其數(shù)值矩陣W代表的部分圖像數(shù)據(jù),寫回到圖像文件P2.JPG中,其顯示結(jié)果如圖4-17所示。>>W=imread('P1.JPG');image(W)%讀取圖像文件P1.JPG到矩陣W,并顯示>>W1=W(280:1700,300:2200,:);%取圖像矩陣W的部分值,并保存為W1>>imwrite(W1,'P2.JPG');figure;%將W1中的圖像數(shù)據(jù)寫到文件P2.JPG中>>W2=imread('P2.JPG');image(W2)%讀取圖像文件P2.JPG到矩陣W2,并顯示64以上命令,首先將寬為1920像素,長為2560像素的真彩模式的圖像文件P1.JPG經(jīng)由函數(shù)imread()讀入后,產(chǎn)生了一個(gè)1920

2560

3的三維數(shù)組W,數(shù)值數(shù)組W通過函數(shù)image()將其代表的圖像顯示在MATLAB的窗口下,并標(biāo)出了像素坐標(biāo)位置,如圖4-17(a)所示;然后根據(jù)圖4-17(a)中的像素坐標(biāo)范圍,適當(dāng)選取圖像的有效區(qū)域,利用函數(shù)imwrite()得到裁剪后的圖像文件P

溫馨提示

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

評論

0/150

提交評論