10matlab課件2007交通第四講繪圖_第1頁(yè)
10matlab課件2007交通第四講繪圖_第2頁(yè)
10matlab課件2007交通第四講繪圖_第3頁(yè)
10matlab課件2007交通第四講繪圖_第4頁(yè)
10matlab課件2007交通第四講繪圖_第5頁(yè)
已閱讀5頁(yè),還剩94頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第四講MATLAB繪圖

4.1二維圖形

4.2三維圖形

4.3三維圖形的精細(xì)處理

4.4圖像與動(dòng)畫(huà)

4.5低層繪圖操作

4.1二維圖形4.1.1繪制二維曲線的最基本函數(shù)1.plot函數(shù)的基本用法plot函數(shù)的基本調(diào)用格式為:

plot(x,y)

其中x和y為長(zhǎng)度相同的向量,分別用于存儲(chǔ)x坐標(biāo)和y坐標(biāo)數(shù)據(jù)。

例4.1

在0≤X≤2區(qū)間內(nèi),繪制曲線:

x=0:pi/100:2*pi;y=2*exp(-0.5*x).*sin(2*pi*x);plot(x,y);

說(shuō)明:(1)當(dāng)x,y是同維矩陣時(shí),則以x,y對(duì)應(yīng)列元素為橫、縱坐標(biāo)分別繪制曲線,曲線條數(shù)等于矩陣的列數(shù)。(2)當(dāng)x是向量,y是有一維與x同維的矩陣時(shí),則繪制出多根不同色彩的曲線。曲線條數(shù)等于y矩陣的另一維數(shù),x被作為這些曲線共同的橫坐標(biāo)。(3)plot函數(shù)最簡(jiǎn)單的調(diào)用格式是只包含一個(gè)輸入?yún)?shù):plot(x)。

例4.2某工廠2000年各月總產(chǎn)值(單位:萬(wàn)元)分別為22、60、88、95、56、23、9、10、14、81、56、23,試?yán)L制折線圖以顯示出該廠總產(chǎn)值的變化情況。程序如下:

p=[22,60,88,95,56,23,9,10,14,81,56,23];plot(p)

2.含多個(gè)輸入?yún)?shù)的plot函數(shù)含多個(gè)輸入?yún)?shù)的plot函數(shù)調(diào)用格式為:

plot(x1,y1,x2,y2,…,xn,yn)3.含選項(xiàng)的plot函數(shù)含選項(xiàng)的plot函數(shù)調(diào)用格式為:

plot(x1,y1,選項(xiàng)1,x2,y2,選項(xiàng)2,…,xn,yn,選項(xiàng)n)plot(x,y,‘color_linestyle_marker’)例:plot(x,y,‘y:square’)color_linestyle_markerColorstringsare'c','m','y','r','g','b','w',and'k'.Thesecorrespondtocyan,magenta,yellow,red,green,blue,white,andblack.Linestylestringsare'-'forsolid,'--'fordashed,':'fordotted,and'-.'fordash-dot.OmitthelinestylefornolineThemarkertypesare'+','o','*',and'x',andthefilledmarkertypesare's'forsquare,'d'fordiamond,'^'foruptriangle,'v'fordowntriangle,'>'forrighttriangle,'<'forlefttriangle,'p'forpentagram,'h‘forhexagram,andnonefornomarker.

例4.3

用不同線型和顏色在同一坐標(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,'g:',x,y2,'b--',x1,y3,'rp');

4.雙縱坐標(biāo)函數(shù)plotyy

plotyy函數(shù)是MATLAB5.X新增的函數(shù)。它能把函數(shù)值具有不同量綱、不同數(shù)量級(jí)的兩個(gè)函數(shù)繪制在同一坐標(biāo)中。調(diào)用格式為:

plotyy(x1,y1,x2,y2)

其中x1—y1對(duì)應(yīng)一條曲線,x2—y2對(duì)應(yīng)另一條曲線。橫坐標(biāo)的標(biāo)度相同,縱坐標(biāo)有兩個(gè),左縱坐標(biāo)用于x1—y1數(shù)據(jù)對(duì),右縱坐標(biāo)用于x2—y2數(shù)據(jù)對(duì)。

x1=0:pi/100:2*pi;x2=0:pi/100:3*pi;y1=exp(-0.5*x1).*sin(2*pi*x1);y2=1.5*exp(-0.1*x2).*sin(x2);

plotyy(x1,y1,x2,y2);例4.4

用不同標(biāo)度在同一坐標(biāo)內(nèi)繪制兩條曲線:

4.1.2繪制圖形的輔助操作

1.圖形標(biāo)注

有關(guān)圖形標(biāo)注函數(shù)的調(diào)用格式為:

title(圖形名稱(chēng))xlabel(x軸說(shuō)明)ylabel(y軸說(shuō)明)text(x,y,圖形說(shuō)明)legend(圖例1,圖例2,…)

例4.5

給圖形添加圖形標(biāo)注。

x=(0:pi/100:2*pi)';y1=2*exp(-0.5*x)*[1,-1];y2=2*exp(-0.5*x).*sin(2*pi*x);x3=(0:12)/2;y3=2*exp(-0.5*x3).*sin(2*pi*x3);plot(x,y1,'g:',x,y2,'b--',x3,y3,'rp');title('曲線及其包絡(luò)線');%加圖形標(biāo)題

xlabel('independentvariableX');%加X(jué)軸說(shuō)明

ylabel('independentvariableY');%加Y軸說(shuō)明

text(2.8,0.5,'包絡(luò)線');%在指定位置添加圖形說(shuō)明

text(0.5,0.5,'曲線y');text(1.4,0.1,'離散數(shù)據(jù)點(diǎn)');legend('包絡(luò)線','包絡(luò)線','曲線y','離散數(shù)據(jù)點(diǎn)')%加圖例希臘字母、上標(biāo)、下標(biāo)、數(shù)學(xué)符號(hào)、字型:t=-pi:pi/100:pi;y=sin(t);plot(t,y)axis([-pipi-11])xlabel('-\pi\leq{\itt}\leq\pi’,'FontSize',16)ylabel('sin(t)','FontSize',16)title('Graphofthesinefunction')text(1,-1/3,'{\itNotetheoddsymmetry.}')交互式圖形編輯應(yīng)用函數(shù)編輯圖形setget應(yīng)用圖形編輯模式

2.坐標(biāo)控制函數(shù)的調(diào)用格式為:

axis([xminxmaxyminymaxzminzmax])axis函數(shù)功能豐富,常用的用法還有:axisequal

縱、橫坐標(biāo)軸采用等長(zhǎng)刻度axissquare

產(chǎn)生正方形坐標(biāo)系(缺省為矩形)axisauto

使用缺省設(shè)置axisoff

取消坐標(biāo)軸axison

顯示坐標(biāo)軸gridon/off控制是畫(huà)還是不畫(huà)網(wǎng)格線,不帶參數(shù)的grid命令在兩種狀態(tài)之間進(jìn)行切換。boxon/off控制是加還是不加邊框線,不帶參數(shù)的box命令在兩種狀態(tài)之間進(jìn)行切換。

例4.6

用圖形保持功能在同一坐標(biāo)內(nèi)繪制曲線及其包絡(luò)線,并加網(wǎng)格線:

x=(0:pi/100:2*pi)';y1=2*exp(-0.5*x)*[1,-1];y2=2*exp(-0.5*x).*sin(2*pi*x);plot(x,y1,'b:');axis([0,2*pi,-2,2]);%設(shè)置坐標(biāo)

holdon;%設(shè)置圖形保持狀態(tài)

plot(x,y2,'k');gridon;%加網(wǎng)格線

boxoff;%不加坐標(biāo)邊框

holdoff;%關(guān)閉圖形保持

3.圖形窗口的分割

subplot函數(shù)的調(diào)用格式為:subplot(m,n,p)例4.7

在一個(gè)圖形窗口中以子圖形式同時(shí)繪制正弦、余弦、正切、余切曲線。

x=linspace(0,2*pi,60);y=sin(x);z=cos(x);t=sin(x)./(cos(x)+eps);ct=cos(x)./(sin(x)+eps);subplot(2,2,1);plot(x,y);title('sin(x)');axis([0,2*pi,-1,1]);subplot(2,2,2);plot(x,z);title('cos(x)');axis([0,2*pi,-1,1]);subplot(2,2,3);plot(x,t);title('tangent(x)');axis([0,2*pi,-40,40]);subplot(2,2,4);plot(x,ct);title('cotangent(x)');axis([0,2*pi,-40,40]);

對(duì)圖形窗口靈活分割。請(qǐng)看下面的程序。

x=linspace(0,2*pi,60);y=sin(x);z=cos(x);t=sin(x)./(cos(x)+eps);ct=cos(x)./(sin(x)+eps);subplot(2,2,1);%選擇2×2個(gè)區(qū)中的1號(hào)區(qū)

stairs(x,y);title('sin(x)-1');axis([0,2*pi,-1,1]);subplot(2,1,2);%選擇2×1個(gè)區(qū)中的2號(hào)區(qū)

stem(x,y);title('sin(x)-2');axis([0,2*pi,-1,1]);subplot(4,4,3);%選擇4×4個(gè)區(qū)中的3號(hào)區(qū)

plot(x,y);title('sin(x)');axis([0,2*pi,-1,1]);subplot(4,4,4);%選擇4×4個(gè)區(qū)中的4號(hào)區(qū)

plot(x,z);title('cos(x)');axis([0,2*pi,-1,1]);subplot(4,4,7);%選擇4×4個(gè)區(qū)中的7號(hào)區(qū)

plot(x,t);title('tangent(x)');axis([0,2*pi,-40,40]);subplot(4,4,8);%選擇4×4個(gè)區(qū)中的8號(hào)區(qū)

plot(x,ct);title('cotangent(x)');axis([0,2*pi,-40,40]);

4.創(chuàng)建多個(gè)圖形窗口

figure,figure(n)例4.7

在兩個(gè)圖形窗口分別繪制sin、sinh曲線。

x=linspace(0,2*pi,60);figure;plot(x,sin(x));figure;plot(x,sinh(x));

%close;

4.1.3繪制二維圖形的其他函數(shù)

1、其他形式的線性直角坐標(biāo)圖在線性直角坐標(biāo)系中,其他形式的圖形有條形圖階梯圖、火柴桿圖(離散序列)和填充圖(填滿(mǎn)二維多邊形)等,所采用的函數(shù)分別是:

bar(x,y,選項(xiàng))stairs(x,y,選項(xiàng))stem(x,y,選項(xiàng))fill(x1,y1,選項(xiàng)1,x2,y2,選項(xiàng)2,…)

例4.8

分別以條形圖、填充圖、階梯圖和火柴桿圖形式繪制曲線:y=2e-0.5x。程序如下:

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ù)用來(lái)繪制極坐標(biāo)圖,其調(diào)用格式為:polar(theta,rho,選項(xiàng))其中theta為極坐標(biāo)極角,rho為極坐標(biāo)矢徑,選項(xiàng)的內(nèi)容與plot函數(shù)相似。例4.9

繪制ρ=sin(2θ)cos(2θ)的極坐標(biāo)圖。程序如下:

theta=0:0.01:2*pi;rho=sin(2*theta).*cos(2*theta);polar(theta,rho,'k');

3.對(duì)數(shù)坐標(biāo)圖形

MATLAB提供了繪制對(duì)數(shù)和半對(duì)數(shù)坐標(biāo)曲線的函數(shù),調(diào)用格式為:

semilogx(x1,y1,選項(xiàng)1,x2,y2,選項(xiàng)2,…):x軸為log10刻度,y軸為線性刻度

semilogy(x1,y1,選項(xiàng)1,x2,y2,選項(xiàng)2,…)loglog(x1,y1,選項(xiàng)1,x2,y2,選項(xiàng)2,…):繪出log10-log10為坐標(biāo)刻度的對(duì)數(shù)圖

例4.10

繪制y=10x2的對(duì)數(shù)坐標(biāo)圖,并與直角線性坐標(biāo)圖進(jìn)行比較。

x=0:0.1:10;y=10*x.*x;subplot(2,2,1);plot(x,y);title('plot(x,y)');gridon;subplot(2,2,2);semilogx(x,y);title('semilogx(x,y)');gridon;subplot(2,2,3);semilogy(x,y);title('semilogy(x,y)');gridon;subplot(2,2,4);loglog(x,y);title('loglog(x,y)');gridon;

4.對(duì)函數(shù)自適應(yīng)采樣的繪圖函數(shù)精確繪圖函數(shù),可以對(duì)劇烈變化處進(jìn)行較密集的取樣。fplot函數(shù)的調(diào)用格式為:

fplot(fname,lims,tol,選項(xiàng))例4.11用fplot函數(shù)繪制f(x)=cos(tan(πx))的曲線。先建立函數(shù)文件myf.m:

functiony=myf(x)y=cos(tan(pi*x));

再用fplot函數(shù)繪制myf.m函數(shù)的曲線:

fplot('myf',[-0.4,1.4],1e-4)例4.12figure;fplot(‘sin(1/x)',[0.020.2])

5.其他形式的圖形MATLAB提供的繪圖函數(shù)還有很多,例如,用來(lái)表示各元素占總和的百分比的餅圖、復(fù)數(shù)的極坐標(biāo)相量圖等。例4.13

繪制圖形:(1)某次考試優(yōu)秀、良好、中等、及格、不及格的人數(shù)分別為:7,17,23,19,5,試用餅圖作成績(jī)統(tǒng)計(jì)分析。(2)繪制復(fù)數(shù)的相量圖:3+2i、4.5-i和-1.5+5i。subplot(1,2,1);pie([7,17,23,19,5]);title('餅圖');legend('優(yōu)秀','良好','中等','及格','不及格');subplot(1,2,2);compass([3+2i,4.5-i,-1.5+5i]);title('相量圖');

4.2三維圖形

4.2.1繪制三維曲線的最基本函數(shù)

plot3函數(shù)與plot函數(shù)用法十分相似,其調(diào)用格式為:plot3(x1,y1,z1,選項(xiàng)1,x2,y2,z2,選項(xiàng)2,…,xn,yn,zn,選項(xiàng)n)

例4.14

繪制空間曲線。

t=0:pi/50:2*pi;x=8*cos(t);y=4*sqrt(2)*sin(t);z=-4*sqrt(2)*sin(t);figure;plot3(x,y,z,'p');title('Linein3-DSpace');text(0,0,0,'origin');

xlabel('X'),ylabel('Y'),zlabel('Z');grid;

4.2.2三維曲面[X,Y]=meshgrid(-8:0.5:8);R=sqrt(X.^2+Y.^2)+eps;Z=sin(R)./R;mesh(X,Y,Z)4.2.2三維曲面[X,Y]=meshgrid(-8:0.5:8);R=sqrt(X.^2+Y.^2)+eps;Z=sin(R)./R;surf(X,Y,Z)

4.2.2三維曲面1.平面網(wǎng)格坐標(biāo)矩陣生成(1)利用矩陣運(yùn)算生成。x=a:dx:b;y=(c:dy:d)';X=ones(size(y))*x;Y=y*ones(size(x));(2)利用meshgrid函數(shù)生成。X=a:dx:b;y=c:dy:d;[X,Y]=meshgrid(x,y);x=123y=4567>>[X,Y]=meshgrid(x,y)X=123123123123Y=444555666777

例4.14已知6<x<30,15<y<36,求不定方程2x+5y=126的整數(shù)解。x=7:29;y=16:35;[x,y]=meshgrid(x,y);%在[7,29]×[16,35]區(qū)域生成網(wǎng)格%坐標(biāo)z=2*x+5*y;k=find(z==126);%找出解的位置x(k),y(k)%輸出對(duì)應(yīng)位置的x,y即方程的解

2.繪制三維曲面的函數(shù)(網(wǎng)線圖和網(wǎng)面圖)

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

mesh(x,y,z,c)surf(x,y,z,c)例4.15

用三維曲面圖表現(xiàn)函數(shù)z=sin(y)cos(x)。

程序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');

程序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');

程序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;

例4.16

分析由函數(shù)z=x2-2y2構(gòu)成的曲面形狀及與平面z=a的交線。

[x,y]=meshgrid(-10:0.2:10);z1=(x.^2-2*y.^2)+eps;%第1個(gè)曲面

a=input('a=?');z2=a*ones(size(x));%第2個(gè)曲面

subplot(1,2,1);mesh(x,y,z1);holdon;mesh(x,y,z2);%分別畫(huà)出兩個(gè)曲面

v=[-10,10,-10,10,-100,100];axis(v);grid;%第1子圖的坐標(biāo)設(shè)置

holdoff;

r0=abs(z1-z2)<=1;%求兩曲面z坐標(biāo)差小于1的點(diǎn)

xx=r0.*x;yy=r0.*y;zz=r0.*z2;

%求這些點(diǎn)上的x,y,z坐標(biāo),即交線坐標(biāo)

subplot(1,2,2);plot3(xx(r0~=0),yy(r0~=0),zz(r0~=0),'*');%在第2子圖畫(huà)出交線

axis(v);grid;%第2子圖的坐標(biāo)設(shè)置surfc(X,Y,Z)—帶等高線的曲面圖>>[X,Y,Z]=peaks(30);>>subplot(1,2,1);surfc(X,Y,Z)>>subplot(1,2,2);surf(X,Y,Z)surfl(X,Y,Z)—帶照明的曲面圖>>[X,Y,Z]=peaks(30);surfl(X,Y,Z)

3.標(biāo)準(zhǔn)三維曲面sphere函數(shù)的調(diào)用格式為:

[x,y,z]=sphere(n)cylinder函數(shù)的調(diào)用格式為:

[x,y,z]=cylinder(R,n)MATLAB還有一個(gè)peaks

函數(shù),稱(chēng)為多峰函數(shù),為matlab自動(dòng)生成的三維測(cè)試圖形,常用于三維曲面的演示。繪制三維球面[x,y,z]=sphere(30);surf(x,y,z);或者:sphere(30)cylinde(r,n)—三維柱面繪圖函數(shù)

r

為半徑;n為柱面圓周等分?jǐn)?shù)例:繪制三維陀螺錐面t1=0:0.1:0.9;t2=1:0.1:2;r=[t1-t2+2];[x,y,z]=cylinder(r,30);surf(x,y,z);grid

4.2.3其他三維圖形

條形圖、餅圖和填充圖等特殊圖形,它們還可以以三維形式出現(xiàn),使用的函數(shù)分別是bar3、pie3和fill3。此外,還有三維曲面的等高線圖。等高線圖分二維和三維兩種形式,分別使用函數(shù)contour和contour3繪制。例4.17繪制多峰函數(shù)的等高線圖。

[x,y,z]=peaks;figure(1);contour(x,y,z,30,'k');figure(2);contour3(x,y,z,30,‘k’);%其中30代表%高度的等級(jí)數(shù)xlabel('x-axis'),ylabel('y-axis'),zlabel('z-axis');title('contour3ofpeaks');contour:把曲面的等高線投影在X-Y平面。contour3:在三維圖中畫(huà)出等高線,這些等高線象云一樣浮在相應(yīng)的高度上。contour(Z,n)--------繪制n條等高線C=contourc(Z,n)------計(jì)算n條等高線的坐標(biāo)clable(C)------給等高線加標(biāo)注例:在二維平面上繪制peaks函數(shù)的10條等高線contour(peaks,10);C=contourc(peaks,10);clabel(C)4.3三維圖形的精細(xì)處理

4.3.1圖形的裁剪處理

MATLAB定義的NaN常數(shù)可以用于表示那些不可使用的數(shù)據(jù),利用這種特性,可以將圖形中需要裁剪部分對(duì)應(yīng)的函數(shù)值設(shè)置成NaN,這樣在繪制圖形時(shí),函數(shù)值為NaN的部分將不顯示出來(lái),從而達(dá)到對(duì)圖形進(jìn)行裁剪的目的。

例4.18

裁掉例4.15三維曲面圖中z>0.25部分。

x=0:0.1:2*pi;[x,y]=meshgrid(x);z=sin(y).*cos(x);[I,J]=find(z>0.25);forii=1:length(I)z(I(ii),J(ii))=NaN;endsurf(x,y,z);

4.3.2視點(diǎn)處理

MATLAB提供了設(shè)置視點(diǎn)(視角)的函數(shù)view。其調(diào)用格式為:

view(az,el)

其中az為方位角,el為俯角,它們均以度為單位。系統(tǒng)缺省的視點(diǎn)定義為方位角-37.5°,俯角30°。view([x,y,z]):由坐標(biāo)[x,y,z]指定觀察點(diǎn)方位角為觀察點(diǎn)和坐標(biāo)原點(diǎn)連線(視線)在x-y平面內(nèi)的投影和y軸的負(fù)方向的夾角。方位角為正時(shí),表示為逆時(shí)針?lè)较?。俯視角為視線與它在x-y平面內(nèi)的投影的夾角。俯視角為正,表示觀察點(diǎn)在z=0的x-y平面以上。

例4.19

從不同視點(diǎn)繪制多峰函數(shù)曲面。

subplot(2,2,1);mesh(peaks);view(-37.5,30);%指定子圖1的視點(diǎn)

title('azimuth=-37.5,elevation=30')subplot(2,2,2);mesh(peaks);view(0,90);%指定子圖2的視點(diǎn)

title('azimuth=0,elevation=90')subplot(2,2,3);mesh(peaks);view(90,0);%指定子圖3的視點(diǎn)

title('azimuth=90,elevation=0')subplot(2,2,4);mesh(peaks);view(-7,-10);%指定子圖4的視點(diǎn)

title('azimuth=-7,elevation=-10')

4.3.3色彩處理

1.顏色的向量表示

MATLAB除用字符表示顏色外,還可以用含有3個(gè)元素的向量表示顏色。

2.色圖色圖是m×3

的數(shù)值矩陣,它的每一行是RGB三元組。色圖矩陣可以人為地生成,也可以調(diào)用MATLAB提供的函數(shù)hsv、hot、cool、summer、gray來(lái)定義色圖矩陣,其中每個(gè)函數(shù)調(diào)用時(shí)可輸入一個(gè)參數(shù),來(lái)指定生成顏色的多少,默認(rèn)顏色數(shù)為64種。除plot及其派生函數(shù)外,mesh、surf等函數(shù)均使用色圖著色。圖形窗口色圖的設(shè)置和改變,使用函數(shù):

colormap(m)

其中m代表色圖矩陣。無(wú)參數(shù)調(diào)用colormap,將返回當(dāng)前圖形窗口的色圖:

colors=colormapcolorbar用色圖條顯示圖形中采用的色圖矩陣。圖形顏色可根據(jù)需要任意生成,也可用matlab配備的色圖函數(shù)

hsv——

飽和值色圖

gray——

線性灰度色圖

hot——

暖色色圖

cool——

冷色色圖

bone——

蘭色調(diào)灰色圖

copper——

銅色色圖

pink——

粉紅色圖

prism——

光譜色圖

jet——飽和值色圖IIflag——

紅、白、藍(lán)交替色圖3.三維表面圖形的著色

三維表面圖實(shí)際上就是在網(wǎng)格圖的每一個(gè)網(wǎng)格片上涂上顏色。surf函數(shù)用缺省的著色方式對(duì)網(wǎng)格片著色。除此之外,還可以用shading命令來(lái)改變著色方式。shadingfaceted

網(wǎng)格修飾,缺省方式shadingflat

——

去掉黑色線條,根據(jù)小方塊的值確定顏色shadinginterp

——

顏色整體改變,根據(jù)小方塊四角的值差補(bǔ)過(guò)度點(diǎn)的值確定顏色z=peaks(20);figure;colormap(copper);subplot(1,3,1);surf(z);subplot(1,3,2);surf(z);shadingflat;subplot(1,3,3);surf(z);shadinginterp;peaks(30);shadinginterp;colormap(hot)[X,Y,Z]=peaks(30);surfl(X,Y,Z)

shadinginterp;colormap(cool);axisoffpeaks(30);colormap(hot);colorbar('SouthOutside');figure(2);peaks(30);colormap(cool);colorbar;

4.3.4光照處理

MATLAB提供了燈光設(shè)置的函數(shù),其調(diào)用格式為:

light('Color',選項(xiàng)1,'Style',選項(xiàng)2,'Position',選項(xiàng)3)

創(chuàng)建光照對(duì)象,即創(chuàng)建一個(gè)光源,該光源的特性由光照對(duì)象的屬性確定,包括光源發(fā)出光的顏色(color)、光源的形狀(style)和光源的位置(position)

例4.21光照處理后的多峰函數(shù)曲面。

z=peaks(20);subplot(1,2,1);surf(z);light('Posi',[0,20,10]);shadinginterp;holdon;plot3(0,20,10,'p');text(0,20,10,'light');subplot(1,2,2);surf(z);light('Posi',[20,0,10]);shadinginterp;holdon;plot3(20,0,10,'p');text(20,0,10,'light');

4.3.5圖形的消隱與透視

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

圖形間消隱,為默認(rèn)值hiddenoff圖形間透視

[X0,Y0,Z0]=sphere(30);%產(chǎn)生單位球面的三維坐標(biāo)X=2*X0;Y=2*Y0;Z=2*Z0%產(chǎn)生半徑為2的球面的三維坐標(biāo)clf,subplot(1,2,1);surf(X0,Y0,Z0);%畫(huà)單位球面shadinginterp;%采用插補(bǔ)明暗處理holdon,mesh(X,Y,Z),colormap(hot),holdoff

%采用hot色圖hiddenoff

%產(chǎn)生透視效果axisequal,axisoff;%不顯示坐標(biāo)軸title('透視圖');subplot(1,2,2);surf(X0,Y0,Z0);%畫(huà)單位球面shadinginterp;%采用插補(bǔ)明暗處理holdon,mesh(X,Y,Z),colormap(hot),holdoff

%采用hot色圖hiddenon

%產(chǎn)生消隱效果axisequal,axisoff;%不顯示坐標(biāo)軸title('消隱圖');4.4圖像與動(dòng)畫(huà)4.4.1圖像

1.imread和imwrite函數(shù)

imread和imwrite函數(shù)分別用于將圖像文件讀入MATLAB工作空間,以及將圖像數(shù)據(jù)和色圖數(shù)據(jù)一起寫(xiě)入一定格式的圖像文件。

2.

image和imagesc函數(shù)

這兩個(gè)函數(shù)用于圖像顯示。為了保證圖像的顯示效果,一般還應(yīng)使用colormap函數(shù)設(shè)置圖像色圖。imagesc函數(shù)能夠自動(dòng)調(diào)整值域范圍

例4.22在C:\MATLAB6p5\toolbox\images\imdemos目錄下有一圖像文件greens.jpg,在圖形窗口顯示該圖像。

[x,cmap]=imread('D:\MATLAB6p5\toolbox\images\imdemos\greens.jpg');%讀取圖像的數(shù)據(jù)陣和色圖陣

image(x);colormap(cmap);axisimageoff%保持寬高比并取消坐標(biāo)軸imshow(x)

4.4.2動(dòng)畫(huà)

1.getframe函數(shù)

getframe函數(shù)可截取每一幅畫(huà)面信息而形成一個(gè)很大的列向量。該向量可保存到一個(gè)變量中。顯然,保存n幅圖就需一個(gè)大矩陣。

2.moviein函數(shù)

moviein(n)函數(shù)用來(lái)建立一個(gè)足夠大的n列矩陣。該矩陣用來(lái)保存n幅畫(huà)面的數(shù)據(jù),以備播放。

3.movie函數(shù)

movie(m,n)函數(shù)以每秒n幅圖形的速度播放由矩陣M的列向量所組成的畫(huà)面。動(dòng)畫(huà)生成的步驟創(chuàng)建幀矩陣,預(yù)留存儲(chǔ)空間

——

moviein對(duì)動(dòng)畫(huà)中的每一幀生成圖形,并把它們放到幀矩陣中

——

getframe從幀矩陣中回放動(dòng)畫(huà)——

movie

例4.23

播放一個(gè)直徑不斷變化的球體。程序如下

[x,y,z]=sphere(50);m=moviein(30);%建立一個(gè)30列大矩陣

fori=1:30surf(i*x,i*y,i*z)%繪制球面

m(:,i)=getframe;%將球面保存到m矩陣

end

movie(m,10);%以每秒10幅的速度播放球面4.5低層繪圖操作

4.5.1圖形對(duì)象及其句柄

1.圖形對(duì)象

MATLAB把構(gòu)成圖形的各個(gè)基本要素稱(chēng)為圖形對(duì)象。這些對(duì)象包括計(jì)算機(jī)屏幕(RootScreen)、圖形窗口(Figure)、坐標(biāo)軸(Axes)、用戶(hù)菜單(Uimenu)、用戶(hù)控件(Uicontrol)、曲線(Line)、曲面(Surface)、文字(Text)、圖像(image)、光源(Light)、區(qū)域塊(Patch)和方框(Rectangle)。系統(tǒng)將每一個(gè)對(duì)象按樹(shù)型結(jié)構(gòu)組織起來(lái)。每個(gè)圖形對(duì)象都可以被獨(dú)立地操作。窗口1窗口n窗口2界面控制界面菜單軸線面字塊像根屏幕對(duì)象層次關(guān)系說(shuō)明:根:圖形對(duì)象的根,對(duì)應(yīng)于計(jì)算機(jī)屏幕,根只有一個(gè),其它所有圖形對(duì)象都是根的后代。圖形窗口:

根的子代,窗口的數(shù)目不限,所有圖形窗口都是根屏幕的子代,除根之外,其它對(duì)象則是窗的后代。界面控制:圖形窗口的子代,創(chuàng)建用戶(hù)界面控制對(duì)象,使得用戶(hù)可采用鼠標(biāo)在圖形上作功能選擇,并返回句柄。界面菜單:

圖形窗口的子代,創(chuàng)建用戶(hù)界面菜單對(duì)象軸:圖形窗口的子代,創(chuàng)建軸對(duì)象,并返回句柄,線面字塊像的父輩線:軸的子代,創(chuàng)建線對(duì)象面:軸的子代,創(chuàng)建面對(duì)象字:軸的子代,創(chuàng)建字對(duì)象塊:軸的子代,創(chuàng)建塊對(duì)象像:軸的子代,創(chuàng)建圖像對(duì)象窗口對(duì)象線對(duì)象軸對(duì)象面對(duì)象像對(duì)象塊對(duì)象線對(duì)象文字對(duì)象

2.圖形對(duì)象句柄

MATLAB在創(chuàng)建每一個(gè)圖形對(duì)象時(shí),都為該對(duì)象分配唯一的一個(gè)值,稱(chēng)其為圖形對(duì)象句柄(Handle)。句柄是圖形對(duì)象的唯一標(biāo)識(shí)符。

MATLAB提供了3個(gè)用于獲取已有圖形對(duì)象句柄的函數(shù):

gcf

獲取當(dāng)前圖形窗口的句柄(getcurrentfigure)。

gca

獲取當(dāng)前坐標(biāo)軸的句柄(getcurrentaxis)。

gco

獲取最近被單擊的圖形對(duì)象的句柄(getcurrentobject)。

delete刪除句柄對(duì)應(yīng)的對(duì)象

eg.delete(gca)將刪除當(dāng)前軸和它的所有子對(duì)象

4.5.2圖形對(duì)象屬性

1.屬性名與屬性值

MATLAB給每種對(duì)象的每一個(gè)屬性規(guī)定了一個(gè)名字,稱(chēng)為屬性名,而屬性名的取值成為屬性值。例如,LineStyle是曲線對(duì)象的一個(gè)屬性名,它的值決定著線型,取值可以是'-'、':'、'-.'、'--'或'none'。

2.屬性的操作(設(shè)置和查詢(xún)屬性值)

set函數(shù):set(句柄,屬性名1,屬性值1,屬性名2,屬性值2,…)

get函數(shù):返回某些對(duì)象屬性的當(dāng)前值

V=get(句柄,屬性名)

4.5.3圖形對(duì)象的創(chuàng)建

1.圖形窗口對(duì)象

建立圖形窗口對(duì)象使用figure函數(shù)。調(diào)用該函數(shù)的命令形式為:

句柄變量=figure(屬性名1,屬性值1,屬性名2,屬性值2,…)MATLAB為每個(gè)圖形窗口提供了很多屬性。這些屬性及其取值控制著圖形窗口對(duì)象。除公共屬性外,其他常用屬性:MenuBar(是否顯示圖形菜單條)、Name(圖形窗口顯示的名稱(chēng))、Position屬性(圖形顯示的大小和位置)、Color(窗口背景色)等。

例4.25

建立一個(gè)圖形窗口。該圖形窗口沒(méi)有菜單條,標(biāo)題名稱(chēng)為“圖形窗口示例”,起始于屏幕左下角、寬度和高度分別為300像素點(diǎn)和150像素點(diǎn),背景顏色為綠色,且當(dāng)用戶(hù)從鍵盤(pán)按下任意一個(gè)鍵時(shí),屏幕將顯示“Hello,KeyboardKeyPressed.”字樣。

命令如下:

hf=figure('Color',[0,1,0],'Position',[1,1,300,150],...

'Name','圖形窗口示例','NumberTitle','off',...

'MenuBar','none','KeyPressFcn',...

'disp(''Hello,KeyboardKey…Pressed.'')')

例4.26分別在4個(gè)不同的圖形窗口繪制出正弦、余弦、正切、余切曲線。要求先建立一個(gè)圖形窗口并繪圖,然后每關(guān)閉一個(gè)再建立下一個(gè),直到建立第4個(gè)窗口并繪圖。

x=linspace(0,2*pi,60);y=sin(x);z=cos(x);t=tan(x);ct=1./(t+eps);%命令組待用

C4=['figure(''Name'',''cotangent(x)'',''NumberTitle'',',...'''off'');plot(x,ct);axis([0,2*pi,-40,40]);'];C3=['figure(''Name'',''tangent(x)'',''DeleteFcn'',C4,',...'''NumberTitle'',''off'');plot(x,t);axis([0,2*pi,-40,40]);'];C2=['figure(''Name'',''cos(x)'',''DeleteFcn'',C3,',...'''NumberTitle'',''off'');plot(x,z);axis([0,2*pi,-1,1]);'];%先創(chuàng)建1個(gè)圖形窗口并繪制曲線

figure('Name','sin(x)','DeleteFcn',C2,'NumberTitle','off');plot(x,y);axis([0,2*pi,-1,1]);

2.坐標(biāo)軸對(duì)象建立坐標(biāo)軸對(duì)象使用

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論