Matlab繪圖
強大的繪圖功能是Matlab的特點之一,Matlab提供了一系列的繪圖函數(shù),用戶不需要過多的考慮繪圖的細節(jié),只需要給出一些基本參數(shù)就能得到所需圖形,這類函數(shù)稱為高層繪圖函數(shù)。此外,Matlab還提供了直接對圖形句柄進行操作的低層繪圖操作。這類操作將圖形的每個圖形元素(如坐標(biāo)軸、曲線、文字等)看做一個獨立的對象,系統(tǒng)給每個對象分配一個句柄,可以通過句柄對該圖形元素進行操作,而不影響其他部分。
本章介紹繪制二維和三維圖形的高層繪圖函數(shù)以及其他圖形控制函數(shù)的使用方法,在此基礎(chǔ)上,再介紹可以操作和控制各種圖形對象的低層繪圖操作。
一.二維繪圖
二維圖形是將平面坐標(biāo)上的數(shù)據(jù)點連接起來的平面圖形??梢圆捎貌煌淖鴺?biāo)系,如直角坐標(biāo)、對數(shù)坐標(biāo)、極坐標(biāo)等。二維圖形的繪制是其他繪圖操作的基礎(chǔ)。
一.繪制二維曲線的基本函數(shù)
在Matlab中,最基本而且應(yīng)用最為廣泛的繪圖函數(shù)為plot,利用它可以在二維平面上繪制出不同的曲線。
1. plot函數(shù)的基本用法
plot函數(shù)用于繪制二維平面上的線性坐標(biāo)曲線圖,要提供一組x坐標(biāo)和對應(yīng)的y坐標(biāo),可以繪制分別以x和y為橫、縱坐標(biāo)的二維曲線。plot函數(shù)的應(yīng)用格式
plot(x,y)???? 其中x,y為長度相同的向量,存儲x坐標(biāo)和y坐標(biāo)。
例51 在[0 , 2pi]區(qū)間,繪制曲線
程序如下:在命令窗口中輸入以下命令??
>> x=0:pi/100:2*pi;
>> y=2*exp(-0.5*x).*sin(2*pi*x);
>> plot(x,y)
程序執(zhí)行后,打開一個圖形窗口,在其中繪制出如下曲線
注意:指數(shù)函數(shù)和正弦函數(shù)之間要用點乘運算,因為二者是向量。
例52 繪制曲線
這是以參數(shù)形式給出的曲線方程,只要給定參數(shù)向量,再分別求出x,y向量即可輸出曲線:
>> t=-pi:pi/100:pi;
>> x=t.*cos(3*t);
>> y=t.*sin(t).*sin(t);
>> plot(x,y)
程序執(zhí)行后,打開一個圖形窗口,在其中繪制出如下曲線
以上提到plot函數(shù)的自變量x,y為長度相同的向量,這是最常見、最基本的用法。實際應(yīng)用中還有一些變化。分別說明:
①
2. 含多個輸入?yún)?shù)的plot函數(shù)
plot函數(shù)可以包含若干組向量對,每一組可以繪制出一條曲線。含多個輸入?yún)?shù)的plot函數(shù)調(diào)用格式為:plot(x1,y1,x2,y2,…,xn,yn)
如下列命令可以在同一坐標(biāo)中畫出3條曲線。
>> x=linspace(0,2*pi,100);
>> plot(x,sin(x),x,2*sin(x),x,3*sin(x))
當(dāng)輸入?yún)?shù)有矩陣形式時,配對的x,y按對應(yīng)的列元素為橫坐標(biāo)和縱坐標(biāo)繪制曲線,曲線條數(shù)等于矩陣的列數(shù)。
>> x=linspace(0,2*pi,100);
>> y1=sin(x);
>> y2=2*sin(x);
>> y3=3*sin(x);
>> x=[x;x;x]';
>> y=[y1;y2;y3]';
>> plot(x,y,x,cos(x))
x,y都是含有三列的矩陣,它們組成輸入?yún)?shù)對,繪制三條曲線;x和cos(x)又組成一對,繪制一條余弦曲線。
利用plot函數(shù)可以直接將矩陣的數(shù)據(jù)繪制在圖形窗體中,此時plot函數(shù)將矩陣的每一列數(shù)據(jù)作為一條曲線繪制在窗體中。如
>> A=pascal(5)
A =
1???? 1???? 1???? 1???? 1
1???? 2???? 3???? 4???? 5
1 ???? 3???? 6??? 10??? 15
1???? 4??? 10??? 20??? 35
1???? 5??? 15??? 35??? 70
>> plot(A)
3. 含選項的plot函數(shù)
Matlab提供了一些繪圖選項,用于確定所繪曲線的線型、顏色和數(shù)據(jù)點標(biāo)記符號。這些選項如表所示:

?
例 用不同的線型和顏色在同一坐標(biāo)內(nèi)繪制曲線 及其包絡(luò)線。
>> x=(0:pi/100:2*pi)';
>> y1=2*exp(-0.5*x)*[1,-1];
>> y2=2*exp(-0.5*x).*sin(2*pi*x);
>> x1=(0:12)/2;
>> y3=2*exp(-0.5*x1).*sin(2*pi*x1);
>> plot(x,y1,'k:',x,y2,'b--',x1,y3,'rp');
在該plot函數(shù)中包含了3組繪圖參數(shù),第一組用黑色虛線畫出兩條包絡(luò)線,第二組用藍色雙劃線畫出曲線y,第三組用紅色五角星離散標(biāo)出數(shù)據(jù)點。
4. 雙縱坐標(biāo)函數(shù)plotyy
在Matlab中,如果需要繪制出具有不同縱坐標(biāo)標(biāo)度的兩個圖形,可以使用plotyy函數(shù),它能把具有不同量綱,不同數(shù)量級的兩個函數(shù)繪制在同一個坐標(biāo)中,有利于圖形數(shù)據(jù)的對比分析。使用格式為:plotyy(x1,y1,x2,y2)
x1,y1對應(yīng)一條曲線,x2,y2對應(yīng)另一條曲線。橫坐標(biāo)的標(biāo)度相同,縱坐標(biāo)有兩個,左邊的對應(yīng)x1,y1數(shù)據(jù)對,右邊的對應(yīng)x2,y2。
例:(略)
二.繪制圖形的輔助操作
繪制完圖形以后,可能還需要對圖形進行一些輔助操作,以使圖形意義更加明確,可讀性更強。
1. 圖形標(biāo)注
在繪制圖形時,可以對圖形加上一些說明,如圖形的名稱、坐標(biāo)軸說明以及圖形某一部分的含義等,這些操作稱為添加圖形標(biāo)注。有關(guān)圖形標(biāo)注函數(shù)的調(diào)用格式為:
title(’圖形名稱’) (都放在單引號內(nèi))
xlabel(’x軸說明’)
ylabel(’y軸說明’)
text(x,y,’圖形說明’)
legend(’圖例1’,’圖例2’,…) P190
其中,title、xlabel和ylabel函數(shù)分別用于說明圖形和坐標(biāo)軸的名稱。text函數(shù)是在坐標(biāo)點(x,y)處添加圖形說明。(P88 或用gtext命令)。legend函數(shù)用于繪制曲線所用線型、顏色或數(shù)據(jù)點標(biāo)記圖例,圖例放置在空白處,用戶還可以通過鼠標(biāo)移動圖例,將其放到所希望的位置。除legend函數(shù)外,其他函數(shù)同樣適用于三維圖形,在三維中z坐標(biāo)軸說明用zlabel函數(shù)。
上述函數(shù)中的說明文字,除了使用標(biāo)準(zhǔn)的ASCII字符外,還可以使用LaTex(一種流行的數(shù)學(xué)排版軟件)格式的控制字符,這樣就可以在圖形上添加希臘字符,數(shù)學(xué)符號和公式等內(nèi)容。在Matlab支持的LaTex字符串中,用/bf , /it , /rm控制字符分別定義黑體、斜體和正體字符,受LaTex字符串控制部分要加大括號{}括起來。例如,text(0.3,0.5,’the usful {/bf MATLAB}’),將使MATLAB一詞黑體顯示。一些常用的LaTex字符見表,各個字符可以單獨使用也可以和其他字符及命令配合使用。如text(0.3 ,0.5 ,’sin({/omega}t+{/beta})’)
將得到標(biāo)注效果 。

2. 坐標(biāo)控制
在繪制圖形時,Matlab可以自動根據(jù)要繪制曲線數(shù)據(jù)的范圍選擇合適的坐標(biāo)刻度,使得曲線能夠盡可能清晰的顯示出來。所以,一般情況下用戶不必選擇坐標(biāo)軸的刻度范圍。但是,如果用戶對坐標(biāo)不滿意,可以利用axis函數(shù)對其重新設(shè)定。其調(diào)用格式為
axis([xmin xmax ymin ymax zmin zmax])
如果只給出前四個參數(shù),則按照給出的x、y軸的最小值和最大值選擇坐標(biāo)系范圍,繪制出合適的二維曲線。如果給出了全部參數(shù),則繪制出三維圖形。
axis函數(shù)的功能豐富,其常用的用法有:
axis equal :縱橫坐標(biāo)軸采用等長刻度
axis square:產(chǎn)生正方形坐標(biāo)系(默認為矩形)
axis auto:使用默認設(shè)置
axis off:取消坐標(biāo)軸
axis on :顯示坐標(biāo)軸
還有:給坐標(biāo)加網(wǎng)格線可以用grid命令來控制,grid on/off命令控制畫還是不畫網(wǎng)格線,不帶參數(shù)的grid命令在兩種之間進行切換。
給坐標(biāo)加邊框用box命令控制。和grid一樣用法
例 :繪制分段函數(shù),并添加圖形標(biāo)注。(略)
3. 圖形保持
一般情況下,每執(zhí)行一次繪圖命令,就刷新一次當(dāng)前圖形窗口,圖形窗口原有圖形將不復(fù)存在,如果希望在已經(jīng)存在的圖形上再繼續(xù)添加新的圖形,可以使用圖形保持命令hold。hold on/off 命令是保持原有圖形還是刷新原有圖形,不帶參數(shù)的hold命令在兩者之間進行切換。
例:(略)
4. 圖形窗口分割
在實際應(yīng)用中,經(jīng)常需要在一個圖形窗口中繪制若干個獨立的圖形,這就需要對圖形窗口進行分割。分割后的圖形窗口由若干個繪圖區(qū)組成,每一個繪圖區(qū)可以建立獨立的坐標(biāo)系并繪制圖形。同一圖形窗口下的不同圖形稱為子圖。Matlab提供了subplot函數(shù)用來將當(dāng)前窗口分割成若干個繪圖區(qū),每個區(qū)域代表一個獨立的子圖,也是一個獨立的坐標(biāo)系,可以通過subplot函數(shù)激活某一區(qū),該區(qū)為活動區(qū),所發(fā)出的繪圖命令都是作用于該活動區(qū)域。調(diào)用格式:
subplot(m,n,p)
該函數(shù)把當(dāng)前窗口分成m×n個繪圖區(qū),m行,每行n個繪圖區(qū),區(qū)號按行優(yōu)先編號。其中第p個區(qū)為當(dāng)前活動區(qū)。每一個繪圖區(qū)允許以不同的坐標(biāo)系單獨繪制圖形。
例:(略)
三.繪制二維圖形的其他函數(shù)
1. 其他形式的線性直角坐標(biāo)圖
在線性直角坐標(biāo)中,其他形式的圖形有條形圖、階梯圖、桿圖和填充圖等,所采用的函數(shù)分別為:
bar(x,y,選項)????? 選項在單引號中
stem(x,y,選項)
fill(x1,y1,選項1,x2,y2,選項2,…)
前三個函數(shù)和plot的用法相似,只是沒有多輸入變量形式。fill函數(shù)按向量元素下標(biāo)漸增次序依次用直線段連接x,y對應(yīng)元素定義的數(shù)據(jù)點。
例5-8:分別以條形圖、填充圖、階梯圖和桿圖形式繪制曲線
x=0:0.35:7;
y=2*exp(-0.5*x);
subplot(2,2,1);bar(x,y,'g');
title('bar(x,y,''g'')');axis([0, 7, 0 ,2]);
subplot(2,2,2);fill(x,y,'r');
title('fill(x,y,''r'')');axis([0, 7, 0 ,2]);
subplot(2,2,3);stairs(x,y,'b');
title('stairs(x,y,''b'')');axis([0, 7, 0 ,2]);
subplot(2,2,4);stem(x,y,'k');
title('stem(x,y,''k'')');axis([0, 7, 0 ,2]);
2. 極坐標(biāo)圖
polar函數(shù)用來繪制極坐標(biāo)圖,調(diào)用格式為:
polar(theta,rho,選項)
其中,theta為極坐標(biāo)極角,rho為極徑,選項的內(nèi)容和plot函數(shù)相似。
例5-9:繪制 的極坐標(biāo)圖
theta=0:0.01:2*pi;
rho=sin(3*theta).*cos(5*theta);
polar(theta,rho,'r');
3. 對數(shù)坐標(biāo)圖
在實際應(yīng)用中,經(jīng)常用到對數(shù)坐標(biāo),Matlab提供了繪制對數(shù)和半對數(shù)坐標(biāo)曲線的函數(shù),其調(diào)用格式為:
semilogx(x1,y1,選項1,x2,y2,選項2,…)
semilogy(x1,y1,選項1,x2,y2,選項2,…)
loglog(x1,y1,選項1,x2,y2,選項2,…)
這些函數(shù)中選項的定義和plot函數(shù)完全一樣,所不同的是坐標(biāo)軸的選取。semilogx函數(shù)使用半對數(shù)坐標(biāo),x軸為常用對數(shù)刻度,而y軸仍保持線性刻度。semilogy恰好和semilogx相反。loglog函數(shù)使用全對數(shù)坐標(biāo),x、y軸均采用對數(shù)刻度。
例:略
4. 對函數(shù)自適應(yīng)采樣的繪圖函數(shù)
5. 其他形式的二維圖形
二. 三維繪圖
一.繪制三維曲線的基本函數(shù)
最基本的三維圖形函數(shù)為plot3,它將二維繪圖函數(shù)plot的有關(guān)功能擴展到三維空間,可以用來繪制三維曲線。其調(diào)用格式為:
plot3(x1,y1,z1,選項1,x2,y2,z2,選項2,…)
其中每一組x,y,z組成一組曲線的坐標(biāo)參數(shù),選項的定義和plot的選項一樣。當(dāng)x,y,z是同維向量時,則x,y,z對應(yīng)元素構(gòu)成一條三維曲線。當(dāng)x,y,z是同維矩陣時,則以x,y,z對應(yīng)列元素繪制三維曲線,曲線條數(shù)等于矩陣的列數(shù)。
例513 繪制空間曲線
該曲線對應(yīng)的參數(shù)方程為
t=0:pi/50:2*pi;
x=8*cos(t);
y=4*sqrt(2)*sin(t);
z=-4*sqrt(2)*sin(t);
plot3(x,y,z,'p');
title('Line in 3-D Space');
text(0,0,0,'origin');
xlabel('X');ylabel('Y');zlabel('Z');grid;
二.三維曲面
1.平面網(wǎng)格坐標(biāo)矩陣的生成
當(dāng)繪制z=f(x,y)所代表的三維曲面圖時,先要在xy平面選定一矩形區(qū)域,假定矩形區(qū)域為D=[a,b]×[c,d],然后將[a,b]在x方向分成m份,將[c,d]在y方向分成n份,由各劃分點做平行軸的直線,把區(qū)域D分成m×n個小矩形。生成代表每一個小矩形頂點坐標(biāo)的平面網(wǎng)格坐標(biāo)矩陣,最后利用有關(guān)函數(shù)繪圖。
產(chǎn)生平面區(qū)域內(nèi)的網(wǎng)格坐標(biāo)矩陣有兩種方法:
利用矩陣運算生成。
x=a:dx:b;
y=(c:dy:d)’;
X=ones(size(y))*x;
Y=y*ones(size(x));
經(jīng)過上述語句執(zhí)行后,矩陣X的每一行都是向量x,行數(shù)等于向量y的元素個數(shù),矩陣Y的每一列都是向量y,列數(shù)等于向量x的元素個數(shù)。
利用meshgrid函數(shù)生成;
x=a:dx:b;
y=c:dy:d;
[X,Y]=meshgrid(x,y);
語句執(zhí)行后,所得到的網(wǎng)格坐標(biāo)矩陣和上法,相同,當(dāng)x=y時,可以寫成meshgrid(x)
2.繪制三維曲面的函數(shù)
Matlab提供了mesh函數(shù)和surf函數(shù)來繪制三維曲面圖。mesh函數(shù)用來繪制三維網(wǎng)格圖,而surf用來繪制三維曲面圖,各線條之間的補面用顏色填充。其調(diào)用格式為:
mesh(x,y,z,c)
surf(x,y,z,c)
一般情況下,x,y,z是維數(shù)相同的矩陣,x,y是網(wǎng)格坐標(biāo)矩陣,z是網(wǎng)格點上的高度矩陣,c用于指定在不同高度下的顏色范圍。c省略時,Matlab認為c=z,也即顏色的設(shè)定是正比于圖形的高度的。這樣就可以得到層次分明的三維圖形。當(dāng)x,y省略時,把z矩陣的列下標(biāo)當(dāng)作x軸的坐標(biāo),把z矩陣的行下標(biāo)當(dāng)作y軸的坐標(biāo),然后繪制三維圖形。當(dāng)x,y是向量時,要求x的長度必須等于z矩陣的列,y的長度必須等于必須等于z的行,x,y向量元素的組合構(gòu)成網(wǎng)格點的x,y坐標(biāo),z坐標(biāo)則取自z矩陣,然后繪制三維曲線。
例515 用三維曲面圖表現(xiàn)函數(shù) :
為了便于分析三維曲面的各種特征,下面畫出3種不同形式的曲面。
%program 1
x=0:0.1:2*pi;
[x,y]=meshgrid(x);
z=sin(y).*cos(x);
mesh(x,y,z);
xlabel('x-axis'),ylabel('y-axis'),zlabel('z-axis');
title('mesh'); pause;
%program 2
x=0:0.1:2*pi;
[x,y]=meshgrid(x);
z=sin(y).*cos(x);
surf(x,y,z);
xlabel('x-axis'),ylabel('y-axis'),zlabel('z-axis');
title('surf'); pause;
%program 3
x=0:0.1:2*pi;
[x,y]=meshgrid(x);
z=sin(y).*cos(x);
plot3(x,y,z);
xlabel('x-axis'),ylabel('y-axis'),zlabel('z-axis');
title('plot3-1');grid;
程序執(zhí)行結(jié)果分別如上圖所示。從圖中可以發(fā)現(xiàn),網(wǎng)格圖(mesh)中線條有顏色,線條間補面無顏色。曲面圖(surf)的線條都是黑色的,線條間補面有顏色。進一步觀察,曲面圖補面顏色和網(wǎng)格圖線條顏色都是沿z軸變化的。用plot3 繪制的三維曲面實際上由三維曲線組合而成??梢苑治鰌lot(x’,y’,z’)所繪制的曲面的特征。
例516 繪制兩個直徑相等的圓管相交的圖形。
m=30;
z=1.2*(0:m)/m;
r=ones(size(z));
theta=(0:m)/m*2*pi;
x1=r'*cos(theta);y1=r'*sin(theta);%生成第一個圓管的坐標(biāo)矩陣
z1=z'*ones(1,m+1);
x=(-m:2:m)/m;
x2=x'*ones(1,m+1);y2=r'*cos(theta);%生成第一個圓管的坐標(biāo)矩陣
z2=r'*sin(theta);
surf(x1,y1,z1);????????? %繪制豎立的圓管
axis equal ,axis off
hold on
surf(x2,y2,z2);????????? %繪制平放的圓管
axis equal ,axis off
title ('兩個等直徑圓管的交線');
hold off
例517 分析由函數(shù) 構(gòu)成的曲面形狀與平面z=a的交線。
此外,還有兩個和mesh函數(shù)相似的函數(shù),即帶等高線的三維網(wǎng)格曲面函數(shù)meshc和帶底座的三維網(wǎng)格曲面函數(shù)meshz,其用法和mesh類似。不同的是,meshc還在xy平面上繪制曲面在z軸方向的等高線,meshz還在xy平面上繪制曲面的底座。
surf函數(shù)也有兩個類似的函數(shù),即具有等高線的曲面函數(shù)surfc和具有光照效果的曲面函數(shù)surfl。
例518 在xy平面內(nèi)選擇[-8, 8]×[-8, 8]繪制函數(shù),
[x,y]=meshgrid(-8:0.5:8);
z=sin(sqrt(x.^2+y.^2))./sqrt(x.^2+y.^2+eps);
subplot(2,2,1);
meshc(x,y,z);
title('meshc');
subplot(2,2,2);
meshz(x,y,z);
title('meshz');
subplot(2,2,3);
surfc(x,y,z);
title('surfc');
subplot(2,2,4);
surfl(x,y,z);
title('surfl');
3.標(biāo)準(zhǔn)三維曲面
Matlab提供了一些函數(shù)用于繪制標(biāo)準(zhǔn)三維曲面,這些函數(shù)可以產(chǎn)生相應(yīng)的繪圖數(shù)據(jù),常用于三維圖形的演示。如,sphere函數(shù)和cylinder函數(shù)分別用于繪制三維球面和柱面。sphere函數(shù)的調(diào)用格式為:
[x,y,z]=sphere(n);
該函數(shù)將產(chǎn)生(n+1)×(n+1矩陣x,y,z 。采用這三個矩陣可以繪制出圓心位于原點、半徑為1的單位球體。若在調(diào)用該函數(shù)時不帶輸出參數(shù),則直接繪制所需球面。n決定了球面的圓滑程度,其默認值為20。若n值取的比較小,則繪制出多面體的表面圖。
cylinder函數(shù)的調(diào)用格式為:
[x,y,z]=cylinder(R,n)
其中R是一個向量,存放柱面各個等間隔高度上的半徑,n表示在圓柱圓周上有n個間隔點,默認有20個間隔點。如:cylinder(3)生成一個圓柱,cylinder([10,1])生成一個圓錐。而t=0:pi/100:4*pi; R=sin(t); cylinder(R,30);生成一個正弦圓柱面。
另外Matlab還提供了一個peaks函數(shù),稱為多峰函數(shù),常用于三維曲面的演示。該函數(shù)可以用來生成繪圖數(shù)據(jù)矩陣,矩陣元素由函數(shù):
在矩形區(qū)域[-3 3]×[-3 3]的等分網(wǎng)格點上的函數(shù)值確定。如:z=peaks(30)
將生成一個30×30矩陣,
例519 繪制標(biāo)準(zhǔn)三維曲面圖形
t=0:pi/20:2*pi;
[x,y,z]=cylinder(2+sin(t),30);
subplot(1,3,1);
surf(x,y,z);
subplot(1,3,2);
[x,y,z]=sphere;
surf(x,y,z);
subplot(1,3,3);
[x,y,z]=peaks(30);
meshz(x,y,z);
3.其他三維圖形。
在介紹二維圖形時,曾經(jīng)提到條形圖、桿圖、餅圖和填充圖等特殊圖形,它們還可以以三維形式出現(xiàn),其函數(shù)分別為bar3,stem3,pie3和fill3。
bar3繪制三維條形圖,常用格式為:
bar3(y);
bar3(x,y)
在第一種格式中,y的每個元素對應(yīng)于一個條形。第二種格式在x指定的位置上繪制y中元素的條形圖。
stem3函數(shù)繪制離散序列數(shù)據(jù)的三維桿圖,常用格式為:
stem3(z)
stem3(x,y,z)
第一種格式將數(shù)據(jù)序列z表示為從xy平面向上延伸的桿圖,x和y自動生成。第二種格式在x和y指定的位置上繪制數(shù)據(jù)序列z的桿圖,x,y,z的維數(shù)要相同。
pie3函數(shù)繪制三維餅圖,常用格式為:
pie3(x)
x為向量,用x中的數(shù)據(jù)繪制一個三維餅圖。
fill3函數(shù)可在三維空間內(nèi)繪制出填充過的多邊形,常用格式為:
fill3(x,y,z,c)
用x,y,z做多邊形的頂點,而c指定了填充的顏色。
例520 繪制三維圖形。
1繪制魔方陣的三維條形圖2以三維桿圖形式繪制曲線y=2sinx?3已知x =[2347,1827,2043,3025] ,繪制三維餅圖 ????4用隨機的頂點坐標(biāo)值畫出5個黃色三角形
subplot(2,2,1);
bar3(magic(4));
subplot(2,2,2);
y=2*sin(0:pi/10:2*pi);
stem3(y);
subplot(2,2,3);
pie3([2347,1827,2043,3025]);
subplot(2,2,4);
fill3(rand(3,5),rand(3,5),rand(3,5),'y');
除了上面討論的三維圖形外,常用的圖形還有瀑布圖和三維曲面的等高線圖。繪制瀑布圖用waterfall函數(shù),用法和meshz函數(shù)相似,只是它的網(wǎng)格線在x軸方向出現(xiàn),具有瀑布效果。等高線圖分二維和三維兩種形式,分別使用函數(shù)contour和contour3繪制。
例521 繪制多峰函數(shù)的瀑布圖和等高線圖。
subplot(1,2,1);
[X,Y,Z]=peaks(30);
waterfall(X,Y,Z);
xlabel('XX');ylabel('YY');zlabel('ZZ');
subplot(1,2,2);
contour3(X,Y,Z,12,'k');%其中12代表高度的等級數(shù)
xlabel('XX');ylabel('YY');zlabel('ZZ');
三.三維圖形的精細處理
一.視點處理
在日常生活中,從不同的角度觀察物體,所看到的物體形狀是不一樣的。同樣,從不同視點繪制的三維圖形的形狀也是不一樣的。視點位置可由方位角和仰角表示。
方位角
Matlab提供了設(shè)置視點的函數(shù)view,其調(diào)用格式為:
view(az,el)
其中az為方位角,el為仰角,它們均以度為單位。系統(tǒng)默認的視點定義為方位角為-37.5度,仰角30度。
例522 從不同視點繪制多峰函數(shù)曲面。
subplot(2,2,1);mesh(peaks);
view(-37.5,30);
title('1');
subplot(2,2,2);mesh(peaks);
view(0,90);
title('2');
subplot(2,2,3);mesh(peaks);
view(90,0);
title('3');
subplot(2,2,4);mesh(peaks);
view(-7,-10);
title('4');
二.色彩處理
三.圖形的裁剪處理
Matlab定義的NaN常數(shù)可以用于表示那些不可使用的數(shù)據(jù),利用這些特性,可以將圖形中需要裁剪部分對應(yīng)的函數(shù)值設(shè)置成NaN,這樣在繪制圖形時,函數(shù)值為NaN的部分將不顯示出來,從而達到對圖形進行裁剪的目的。例如,要削掉正弦波頂部或底部大于0.5的部分,可使用下面的程序。
x=0:pi/10:4*pi;
y=sin(x);
i=find(abs(y)>0.5);
x(i)=NaN;
plot(x,y);
例524 繪制兩個球面,其中一個在另一個里面,將外面的球裁掉一部分,以便能看到里面的球。
[x,y,z]=sphere(25);
%生成外面的大球
z1=z;
z1(:,1:4)=NaN;%將大球裁去一部分
c1=ones(size(z1));
surf(3*x,3*y,3*z1,c1); ????? %生成里面的小球
hold on
z2=z;
c2=2*ones(size(z2));
c2(:,1:4)=3*ones(size(c2(:,1:4)));
surf(1.5*x,1.5*y,1.5*z2,c2);
colormap([0 1 0;0.5 0 0;1 0 0]);
grid on
hold off
色圖中使用三種顏色,外面的球是綠色,里面的球采用深淺不同的兩種紅色。
四.隱函數(shù)作圖
如果給定了函數(shù)的顯式表達式,可以先設(shè)置自變量向量,然后根據(jù)表達式計算函數(shù)向量,從而用plot等函數(shù)繪制出圖形。但是當(dāng)函數(shù)采用隱函數(shù)形式時,如: ,則很難利用上述方法繪制圖形。Matlab提供了一個ezplot函數(shù)繪制隱函數(shù)圖形。用法如下:
①???? 對于函數(shù)f=f(x),ezplot的調(diào)用格式為:
ezplot(f),在默認區(qū)間(-2pi,2pi)繪制圖形。
ezplot(f,[a,b]),在區(qū)間(a,b)繪制
②???? 對于隱函數(shù)f=f(x,y),ezplot的調(diào)用格式為;
ezplot(f),在默認區(qū)間(-2pi,2pi),(-2pi,2pi)繪制f(x,y)=0的圖形。
ezplot(f,[xmin,xmax,ymin,ymax]);在區(qū)間????????? 繪制圖形。
ezplot(f,[a,b]),在區(qū)間(a,b),(a,b)繪制
③???? 對于參數(shù)方程x=x(t),y=y(t),ezplot函數(shù)的調(diào)用格式為:
ezplot(x,y),在默認區(qū)間 繪制x=x(t),y=y(t)圖形。
ezplot(x,y,[tmin,tmax]),在區(qū)間(tmin,tmax)繪制x=x(t),y=y(t)圖形。
例525 隱函數(shù)繪圖舉例。
subplot(2,2,1);
ezplot('x^2+y^2-9');axis equal;
subplot(2,2,2);
ezplot('x^3+y^3-5*x*y+1/5')
subplot(2,2,3);
ezplot('cos(tan(pi*x))',[0,1]);
subplot(2,2,4);
ezplot('8*cos(t)','4*sqrt(2)*sin(t)',[0,2*pi]);
其他隱函數(shù)繪圖還有,ezpolar,ezcontour,ezplot3,ezmesh,ezmeshc,ezsurf,ezsurfc。
電子發(fā)燒友App




















評論