![第三章-Matlab圖形繪制_第1頁](http://file4.renrendoc.com/view/1c0220f0f7894fd1ddbd33ad7fa700f9/1c0220f0f7894fd1ddbd33ad7fa700f91.gif)
![第三章-Matlab圖形繪制_第2頁](http://file4.renrendoc.com/view/1c0220f0f7894fd1ddbd33ad7fa700f9/1c0220f0f7894fd1ddbd33ad7fa700f92.gif)
![第三章-Matlab圖形繪制_第3頁](http://file4.renrendoc.com/view/1c0220f0f7894fd1ddbd33ad7fa700f9/1c0220f0f7894fd1ddbd33ad7fa700f93.gif)
![第三章-Matlab圖形繪制_第4頁](http://file4.renrendoc.com/view/1c0220f0f7894fd1ddbd33ad7fa700f9/1c0220f0f7894fd1ddbd33ad7fa700f94.gif)
![第三章-Matlab圖形繪制_第5頁](http://file4.renrendoc.com/view/1c0220f0f7894fd1ddbd33ad7fa700f9/1c0220f0f7894fd1ddbd33ad7fa700f95.gif)
版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
Matlab圖形繪制一、二維曲線的繪制繪制二維圖形最常用的函數(shù)是plot,調(diào)用格式有以下四種:plot(Y)如果Y為實向量,則以Y的索引坐標作為橫坐標,以Y本身的元素作為縱坐標。如果Y為復數(shù)向量,則以該向量實部為橫坐標,虛部為縱坐標。plot(X,Y)此時以X為橫坐標,Y為縱坐標。X和Y要求維數(shù)必須相同。當變量X和Y是同階矩陣時,將按照矩陣的行或列進行操作。plot(X,Y,s)第三個變量用于設置圖形顯示屬性。設置圖形的線型、顏色、標記等。plot(X1,Y1,s1,X2,Y2,s2,…..)每三項為一組繪制多條曲線。y=rand(100,1);plot(y)x=rand(100,1);z=x+y.*i;plot(z)示例:例子:多條曲線繪制t=0:0.1:2*pi;y=[sin(t);cos(t)];plot(t,y)(5)在MATLAB中繪圖時,當線條多于一條時,若用戶沒有指定各線條的顏色時,MATLAB會自動以不同的顏色區(qū)分不同的線條,可以查看默認的顏色順序:其顏色分別是:藍色、深綠色、紅色、淺橄欖綠色、紫紅色、土黃色或灰色。注意:當指定了數(shù)據(jù)點標志類型,但不指定線型時,則表示只標記數(shù)據(jù)點,而不進行連線繪圖。
x=linspace(0,2*pi,1000);y1=0.2*exp(-0.5*x).*cos(4*pi*x);y2=2*exp(-0.5*x).*cos(pi*x);plotyy(x,y1,x,y2)二、圖形處理坐標軸的控制Grid命令Box命令圖形數(shù)據(jù)取點圖形保持Hold特殊坐標系的圖形函數(shù)在基本的繪圖函數(shù)使用時,它們的坐標軸刻度均為線性刻度。但是當實際的數(shù)據(jù)出現(xiàn)指數(shù)變化時,指數(shù)變化就不能直觀的從圖形上體現(xiàn)出來。又假如當函數(shù)以極坐標等表示時,我們就不能用線性刻度來表示。為了解決這些問題,matlab提供了相應的繪圖函數(shù)。這里所謂的特殊坐標系是區(qū)別于均勻直角坐標系而言,具體來說就是對數(shù)坐標系、極坐標系、柱坐標和球坐標等。對數(shù)坐標系MATLAB語言提供了繪制不同形式的對數(shù)坐標曲線的功能,具體實現(xiàn)該功能的函數(shù)是semilogx、semilogy
和
loglog。semilogx(x軸對數(shù)刻度坐標圖)用該函數(shù)繪制圖形時x軸采用對數(shù)坐標。
semilogx(y):對x軸的刻度求常用對數(shù)(以10為底),而y為線性刻度。對數(shù)坐標系>>x=0.001:0.01*pi:2*pi;>>y=log10(x);>>semilogx(x,y,'-*');(x軸對數(shù)刻度坐標圖)>>plot(x,y)(均勻直角坐標系)對數(shù)坐標系
Semilogx繪制的y=log10(x)plot繪制的y=log10(x)
如圖所示,x=(0.001~2Π)以0.01Π為間隔。semilogx函數(shù)中x軸的相鄰坐標值之間的刻度是不等距的,它是是按照相等的指數(shù)變化來增加的
。而plot函數(shù)中的相鄰坐標值之間的刻度是等距的。對數(shù)坐標系semilogy(y軸對數(shù)刻度坐標圖)用該函數(shù)繪制圖形時y軸采用對數(shù)坐標。調(diào)用格式與semilogx基本相同。>>x=0.001:0.1*pi:2*pi;>>y=10.^x;>>semilogy(x,y,'-*')>>plot(x,y)semilogy函數(shù)plot函數(shù)對數(shù)坐標系loglog
用該函數(shù)繪制圖形時x和y軸均采用對數(shù)坐標。調(diào)用格式與semilogx基本相同。>>m=1:1*pi:20*pi;>>x=10.^m;>>y=log10(m);>>loglog(x,y,'-*');>>plot(x,y,'-*')loglog函數(shù)plot函數(shù)極坐標系polar命令該命令用于畫極坐標圖,它接受極坐標形式的函數(shù)rho=f(θ)。
polar的調(diào)用格式:
polar(theta,rho,LineSpec)
用極角theta和極徑rho畫出極坐標圖形。極角theta為從x軸到半徑的單位為弧度的向量,極徑rho為各數(shù)據(jù)點到極點的半徑向量,LineSpec指定極坐標圖中線條的線型、標記符號和顏色等。
極坐標系>>rho0=1;theta=0:pi/20:4*pi;rho=rho0+theta*rho0;polar(theta,rho,'r')polar的調(diào)用格式:
polar(theta,rho)用極角theta和極徑rho畫出極坐標圖形。極角theta為從x軸到半徑的單位為弧度的向量,極徑rho為各數(shù)據(jù)點到極點的半徑向量。Matlab實現(xiàn)頻數(shù)直方圖----hist的使用
“hist”是“Histogram”(直方圖、柱狀圖)的簡稱。
1、N=hist(Y)功能:將向量Y的元素平均到十個等間隔的容器中,并且返回每個容器的元素個數(shù);如果Y是一個矩陣,hist指令逐列元素操作。例1:執(zhí)行指令Y=[1:10];Hist(Y)得到:10個藍色方條,每個方條對應一個容器,其長度代表容器中數(shù)據(jù)的多少。由圖知,容器中的數(shù)據(jù)量均為1。例2:執(zhí)行指令Y=[1,2,2,5,6,6,8,11]Hist(Y)得到:長條圖之繪製Bar(y)為。範例5-1:bar01.m x=[13452]; bar(x);Fig.5-15-1長條圖之繪製(cont.)bar指令也可接受矩陣輸入,它會將同一橫列的資料聚集在一起。範例5-2:bar02.mx=[23457;12321];bar(x);Fig.5-25-1長條圖之繪製(cont.)bar及barh指令還有一項特異功能,就是可以將同一橫列的資料以堆疊(Stack)方式來顯示。範例5-3:bar03.mx=[23457;12321];bar(x,'stack')Fig.5-35-1長條圖之繪製(cont.)除了平面長條圖之外,MATLAB亦可使用bar3指令來畫出立體長條圖。範例5-4:bar04.m x=[23457;12321]; bar3(x)Fig.5-45-1長條圖之繪製(cont.)bar3指令還可以使用群組(Group)方式來呈現(xiàn)長條圖範例5-5:bar05.m x=[23457;12321]; bar3(x,'group')Fig.5-55-1長條圖之繪製(cont.)長條圖的指令和類別:垂直長條圖水平長條圖平面barbarh立體bar3bar3h5-1長條圖之繪製(cont.)若要指定長條圖的x座標,可使用兩個輸入向量給bar指令。假設新竹的月平均溫度如下:範例5-6:bar06.mx=1:6; %月份 y=35*rand(1,6); %溫度值(假設是介於0~35的亂數(shù))bar(x,y); xlabel('月份'); %x軸的說明文字ylabel('平均溫度(^{o}c)'); %y軸的說明文字%下列指令將x軸的數(shù)字改成月數(shù)set(gca,'xticklabel',{'一月','二月','三月','四月','五月','六月'});5-1長條圖之繪製(cont.)Fig.5-65-2面積圖之繪製面積圖(AreaGraphs)和以堆疊方式呈現(xiàn)的長條圖很類似,特別適用於具有疊加關係的資料。舉例來說,若要顯示清華大學在過去10年來的人數(shù)(含大學部,研究生,及教職員)變化情況,可用面積圖顯示。範例5-7:area01.m y=rand(10,3)*100; x=1:10; area(x,y); xlabel('Year'); ylabel('Count')Fig.5-75-3扇形圖之繪製使用pie指令,可畫出平面扇形圖(PieCharts),並可加上說明。範例5-8:pie01.m x=[2354]; label={'東','南','西','北'}; pie(x,label);Fig.5-85-3扇形圖之繪製(cont.)pie指令直接將x元素視為面積百分比,因此可畫出不完全的扇形圖。範例5-9:pie02.m x=[0.21,0.14,0.38]; pie(x);Fig.5-95-3扇形圖之繪製(cont.)pie指令還有一特異功能,可將某個或數(shù)個扇形圖向外拖出,以強調(diào)部份資料。範例5-10:pie03.m x=[2354]; explode=[1100]; pie(x,explode);Fig.5-10其中指令explode中非零的元素即代表要向外拖出的扇形。5-3扇形圖之繪製(cont.)欲畫出立體扇形圖,可用pie3指令。範例5-11:pie301.m x=[2354]; explode=[1100]; label={'春','夏','秋','冬'}; pie3(x,explode,label);Fig.5-115-4針頭圖之繪製顧名思義,針頭圖(StemPlots)就是以一個大頭針來表示某一點資料,其指令為stem。範例5-12:stem01.m t=0:0.2:4*pi; y=cos(t).*exp(-t/5); stem(t,y)Fig.5-125-4針頭圖之繪製(cont.)針頭圖特別適用於表示「數(shù)位訊號處理」(DSP,DigitalSignalProcessing)中的數(shù)位訊號。若要畫出實心的針頭圖,可加“fill”選項。範例5-13:stem02.m t=0:0.2:4*pi; y=cos(t).*exp(-t/5); stem(t,y,'fill');Fig.5-135-4針頭圖之繪製(cont.)欲畫出立體的針頭圖, 可用stem3指令。範例5-14:stem301.m theta=-pi:0.05:pi; x=cos(theta); y=sin(theta); z=abs(cos(3*theta)).*exp(-abs(theta/3)); stem3(x,y,z);Fig.5-145-5階梯圖之繪製使用stairs指令,可畫出階梯圖(StairstepPlots),其精神和針頭圖很相近,只是將目前資料點的高度向右水平畫至下一點為止。(在數(shù)位訊號處理,此種作法稱為Zero-orderHold。)範例5-15:stairs01.m t=0:0.4:4*pi; y=cos(t).*exp(-t/5); stairs(t,y);Fig.5-155-5階梯圖之繪製(cont.)若再加上針頭圖,則可見兩 者相似之處。範例5-16:stairs02.m t=0:0.4:4*pi; y=cos(t).*exp(-t/5); stairs(t,y); holdon %保留舊圖形 stem(t,y); %疊上針頭圖 holdoffFig.5-165-6實心圖之繪製MATLAB指令fill將資料點視為多邊形頂點,並將此多邊形塗上顏色,呈現(xiàn)出實心圖(FilledPlots)的結果。範例5-17:fill01.m t=0:0.4:4*pi; y=sin(t).*exp(-t/5); fill(t,y,'b'); %'b'為藍色Fig.5-175-6實心圖之繪製(cont.)若與stem合用,則可創(chuàng)造出 一些不同的視覺效果。範例5-18:fill02.m t=0:0.4:4*pi; y=sin(t).*exp(-t/5); fill(t,y,'y'); %'y'為黃色 holdon %保留舊圖形 stem(t,y,'b'); %疊上藍色針頭圖 holdoffFig.5-185-6實心圖之繪製(cont.)fill3可用於三維的實心圖。範例5-19:fill301.m X=[0011]; Y=[0110]; Z=[0110]; C=[00.30.60.9]'; fill3(X,Y,Z,C);Fig.5-195-6實心圖之繪製(cont.)使用fill3指令,我們亦可以 畫出各種酷酷的圖形。範例5-20:fill302.m t=(1/16:1/8:1)'*2*pi; x=sin(t); y=cos(t); c=linspace(0,1,length(t)); fill3(x,y/sqrt(2),y/sqrt(2),c,x/sqrt(2),y,x/sqrt(2),c); axistightFig.5-205-7向量場圖之繪製使用quiver指令可畫出平面 上的向量場圖(QuiverPlots) ,特別適用於表示分布於平面 的向量場(VectorFields), 例如平面上的電場分布,或是流 速分布。範例5-21:quiver01.m [x,y,z]=peaks(20); [u,v]=gradient(z); contour(x,y,z,10); holdon,quiver(x,y,u,v);holdoff axisimageFig.5-215-7向量場圖之繪製(cont.)欲畫出空間中的向量場圖, 可用quiver3指令。範例5-22:quiver301.m [x,y]=meshgrid(-2:0.2:2,-1:0.1:1); z=x.*exp(-x.^2-y.^2); [u,v,w]=surfnorm(x,y,z); quiver3(x,y,z,u,v,w); holdon,surf(x,y,z);holdoff axisequalFig.5-225-8等高線圖之繪製我們可用contour指令來畫出「等高線圖」(ContourPlots)。範例5-23:contour01.m z=peaks; contour(z,30); %畫出30條等高線Fig.5-235-8等高線圖之繪製(cont.)若要畫出特定高度的等高線,可執(zhí)行如下:範例5-24:contour02.m z=peaks; contour(z,[025]);Fig.5-245-8等高線圖之繪製(cont.)欲標明等高線的高度, 可用clabel指令。範例5-25:contour03.m z=peaks; [c,handle]=contour(z,10); clabel(c,handle);Fig.5-255-8等高線圖之繪製(cont.)若欲在等高線之間填入顏色,可用contourf 指令。範例5-26:contour04.m z=peaks; contourf(z);Fig.5-265-8等高線圖之繪製(cont.)若要使畫出的等高線對 應至正確的x及y 座標,則可執(zhí)行如下:範例5-27:contour05.m [x,y,z]=peaks; contour(x,y,z);%使用三個輸入Fig.5-275-8等高線圖之繪製(cont.)contourf亦可接受x、y、z輸入引數(shù)。若要將等高線畫在曲面的正下方,可用surfc或meshc指令。範例5-28:contour06.m [x,y,z]=peaks; meshc(x,y,z); axistightFig.5-285-8等高線圖之繪製(cont.)若要畫出三度空間中的等高線,可用contour3指令。範例5-29:contour301.m [x,y,z]=peaks; contour3(x,y,z,30); axistighFig.5-295-8等高線圖之繪製(cont.)使用contour指令亦可畫出極座標中的等高線,但過程較為複雜,以下列複數(shù)函數(shù)為例: 其中z代表複數(shù)平面中的任一點複數(shù),如果我們要畫出此函數(shù)的等高線,可見下列範例:範例5-30:contour07.m t=linspace(0,2*pi,61); %角度的格子點 r=0:0.05:1; %長度的格子點 [tt,rr]=meshgrid(t,r); %產(chǎn)生二維的格子點 [xx,yy]=pol2cart(tt,rr); %將極座標轉(zhuǎn)換至直角座標 zz=xx+sqrt(-1)*yy; %複數(shù)表示 ff=abs(zz.^3-1); %曲面的函數(shù) contour(xx,yy,ff,50); %畫出等高線 axisimage5-8等高線圖之繪製(cont.)Fig.5-305-8等高線圖之繪製(cont.)在上例中,座標的標示仍為直 角座標。欲將等高線顯示於極 座標上,需先用polar指令產(chǎn) 生一個極座標圖,再移除圖形 ,留下圖軸,然後再進行作圖 。範例5-31:contour08.m h=polar([02*pi],[01]); delete(h); holdon contour(x,y,abs(f),30); holdoff%產(chǎn)生在極座標上的一條直線%移除上述圖形,但留下極座標圖軸Fig.5-31*要注意的是,你必須先執(zhí)行contour07.m,然後再執(zhí)行contour08.m,才能得到上述的及座標等高線的效果。5-8等高線圖之繪製(cont.)我們也可以同時畫出複數(shù)函數(shù)的曲面和等高線圖,例如,下列範例可以畫出複數(shù)函數(shù):範例5-32:contour09.m t=linspace(0,2*pi,61); %角度的格子點 r=0:0.05:1; %長度的格子點 [tt,rr]=meshgrid(t,r); %產(chǎn)生二維的格子點 [xx,yy]=pol2cart(tt,rr); %將極座標轉(zhuǎn)換至直角座標 zz=xx+sqrt(-1)*yy; %複數(shù)表示 ff=abs(zz.^3-1); %曲面的函數(shù)值 h=polar([02*pi],[01]); %產(chǎn)生在極座標上的一條直線 delete(h); %移除上述圖形,但留下極座標圖軸 holdon contour(xx,yy,ff,20); %等高線 surf(xx,yy,ff); %曲面圖 holdoff view(-19,22); %設定觀測角度5-8等高線圖之繪製(cont.)Fig.5-325-8等高線圖之繪製(cont.)指令說明bar,barh,bar3,bar3h長條圖Area面積圖pie,pie3扇形圖stem,stem3針頭圖stairs階梯圖fill,fill3實心圖quiver,quiver3向量場圖contour,contourf,contour3等高線圖特殊繪圖函數(shù):5-9 其他進階繪圖功能MATLAB在5.3版後,開始支援「容積目視法」(VolumeVisualization)、因此能夠畫出在三度空間中的流線圖、向量場圖、等高面圖(Isosurfaces)、切面圖(Slices)等,相關指令可列表如下頁:5-9 其他進階繪圖功能(cont.)指令說明coneplot以圓錐瓶畫出三度空間的向量場圖contourslice在三度空間的切面上畫出等高線isosurface從容積資料中算出等高面資料isocaps計算等高面在端點切片的等高資訊isonormals計算等高面的法向量slice在三度空間的切片streamline從2–D或3–D的流線資料來畫出流線圖isocolors計算等高區(qū)面頂點的顏色(第六版才支援)divergence計算3-D向量場的亂度(Divergence)(第六版才支援)curl計算3-D向量場的curl及垂直方向的角速度(第六版才支援)※
MATLAB有關於「容積目視法」的指令:
5-9 其他進階繪圖功能(cont.)streamtube由向量資料畫出流線管(StreamTubes)(第六版才支援)streamribbon由向量資料畫出流線緞帶(StreamRibbons)(第六版才支援)streamslice由向量資料畫出間隔分明的流線(第六版才支援)streamparticles由向量資料畫出流線粒子(StreamParticles)(第六版才支援)interpstreamspeed由速度對流線頂點做內(nèi)差(Interpolation)(第六版才支援)volumebounds傳回容積資料的座標及顏色極限值(第六版才支援)※
MATLAB有關於「容積目視法」的指令:
5-9 其他進階繪圖功能(cont.)這些指令的用法較為繁複,由於篇幅有限,在此不詳細說明,讀者可查閱相關的線上支援。若要一睹這些「容積目視」指令所能創(chuàng)造的繽紛效果,您可在MATLAB指令視窗下輸入「volvec」,以開啟展示視窗,在點選「Multiple」之後,產(chǎn)生圖形如右:②極坐標系函數(shù)polar,調(diào)用形式為:polar(theta,rho)或polar(theta,rho,s)③雙縱坐標(雙y軸坐標系)函數(shù)plotyy,調(diào)用形式為:plotyy(X1,Y1,X2,Y2)plotyy(X1,Y1,X2,Y2,fun)fun可以是plot、semilogx、semilogy或loglogplotyy(X1,Y1,X2,Y2,fun1,fun2)fun1繪制(X1,Y1),fun2繪制(X2,Y2)注:雙坐標繪制圖形的調(diào)用過程中,不能夠像前面的plot函數(shù)那樣對曲線屬性進行設置,需要使用句柄圖形控制完成。x=0:0.01:20;y1=200*exp(-0.05*x).*sin(x);y2=0.8*exp(-0.5*x).*sin(10*x);[AX,H1,H2]=plotyy(x,y1,x,y2,'plot');AX是對應兩個坐標軸的句柄,H1和H2分別是對應plot的句柄。(2)二維特殊函數(shù)圖形函數(shù)名說明函數(shù)名說明函數(shù)名說明area填充繪圖feather矢量圖fplot函數(shù)圖繪制bar條形圖stem離散序列餅狀圖hist直方圖barh水平條形圖fill多邊形填充paretoPareto圖comet彗星圖stairs階梯圖pie餅圖errorbar誤差帶圖contour等高線圖plotmatrix分散矩陣繪制ezplot簡單繪制函數(shù)圖contourf填充的等高線圖ribbon三維圖的二維條狀顯示ezpolar簡單繪制極坐標圖scatter散射圖Polar繪制極坐標示例:theta=linspace(0,2*pi);r=cos(2*theta);polar(theta,r)Hist用來顯示資料的分段情況和統(tǒng)計特性,適合于大量數(shù)據(jù)的情況示例:x=randn(9999,1);hist(x,50)Rose與hist接近,將資料的大小視為角度,資料的個數(shù)作為距離,采用極坐標繪圖。示例:x=randn(9999,1);rose(x,50)Bar函數(shù)適合于數(shù)據(jù)點不多時使用示例:x=1:15;y=rand(size(x));bar(x,y);如果已知數(shù)據(jù)的誤差量,可用errorbar表示。示例:x=linspace(0,2*pi,20);y=sin(x);z=std(y)*ones(size(x));errorbar(x,y,z);fplot函數(shù)可以繪制較精確的圖形,適合于變化劇烈的函數(shù)。示例:fplot(‘sin(1/x)’,[0.01,0.3])Stem產(chǎn)生針狀圖,常被用來繪制數(shù)位訊號。x=linspace(0,10,100);y=sin(x).*exp(-x/4);stem(x,y);Fill將資料點視為多邊形頂點,并將此多邊形涂上顏色。x=linspace(0,10,100);y=sin(x).*exp(-x/4);fill(x,y,’c’);Feather函數(shù)將每一個數(shù)據(jù)點視為復數(shù),并以箭頭畫出。theta=linspace(0,2*pi,40);z=cos(theta)+i*sin(theta);feather(z);Compass函數(shù)與feather函數(shù)接近,只是每個箭頭的起點都在圓內(nèi)theta=linspace(0,2*pi,40);z=cos(theta)+i*sin(theta);compass(z);Quiver用來繪制向量場圖。[x,y]=meshgrid(-2:0.2:2);z=x.*exp(-x.^2-y.^2);[Dx,Dy]=gradient(z,0.2,0.2);Contour(x,y,z);holdon;quiver(x,y,Dx,Dy);colormaphsv;holdoff3、顯函數(shù)、隱函數(shù)和符號函數(shù)作圖(1)fplot(fun,lims)繪制由字符串fun指定函數(shù)名的函數(shù)在x軸區(qū)間為lims=[xmin,xmax]的函數(shù)圖。若lims=[xmin,xmax,ymin,ymax],則y軸也被限制。例題:解
1)首先用M文件fun1.m定義函數(shù)f(x)如下functiony=Afun1(x);ifx<1y=x+1;elsey=1+1./x;end在matlab命令窗口輸入fplot('Afun1',[-3,3])就可畫出函數(shù)f(x)的圖形。2)這里也可以使用匿名函數(shù),編寫程序如下fun2=@(x)(x+1)*(x<1)+(1+1/x)*(x>=1);fplot(fun2,[-3,3])(2)ezplot(f)可用來繪制顯函數(shù)、隱函數(shù)和參數(shù)方程的圖形,x軸的默認范圍為[-2pi,2pi]。1)對于顯函數(shù)y=f(x),調(diào)用格式為:ezplot(f,[xmin,xmax])2)對于隱函數(shù)f(x,y)=0,調(diào)用格式為:ezplot(f,[xmin,xmax],[ymin,ymax])ezplot(f,[a,b]),x與y在(a,b)區(qū)間之內(nèi)。3)對于參數(shù)方程x=x(t),y=y(t),調(diào)用格式為:ezplot(x,y)或者ezplot(f,[tmin,tmax])示例1:ezplot(‘x^2*sin(x+y^2)+y^2*exp(x+y)+5*cos(x^2+y)’,[-1010]);示例2:ezplot('cot(x)')示例3:ezplot('x^2+y^2/4=1')示例4:ezplot(‘x^2+y^2-1’,[-1,1],[-1,1])示例5:ezplot(‘x^3+y^3-5*x*y’)示例6:ezplot(‘2*cos(t)’,’sin(t)’,[0,2*pi]);3.2三維曲線的繪制繪制三維曲線的函數(shù)是plot3,與plot函數(shù)的調(diào)用格式相同,也有以下四種:plot3(x,y,z)plot3(X,Y,Z)X,Y,Z是相同階數(shù)的矩陣,繪出三矩陣的列向量的曲線。plot3(X,Y,Z,s)plot3(x1,y1,z1,s1,x2,y2,z2,s2,....)組合圖形以第二種形式為例:[x,y]=meshgrid(-2:0.1:2,-2:0.1:2);z=x.*exp(-x.^2-y.^2);plot3(x,y,z)函數(shù)名說明函數(shù)名說明mesh三維網(wǎng)格圖meshc將網(wǎng)格與等高線結合meshz屏蔽的網(wǎng)格圖meshgrid生成網(wǎng)格點MATLAB對于網(wǎng)格的處理方法是:將xy平面按指定方式分隔成平面網(wǎng)格,然后根據(jù)程序中給定的方式計算第三維變量的值,即z軸的值,與對應的xy平面的坐標構成三維點元素,根據(jù)由此得到的(x,z)和(y,z)計算各平面的曲線,彼此相連就構成了網(wǎng)格圖。3.3三維網(wǎng)線圖和曲面圖的繪制(1)網(wǎng)線圖mesh函數(shù)[X,Y]=meshgrid(x,y)x和y是給定的向量,可以定義網(wǎng)格的劃分區(qū)域,也可以定義網(wǎng)格的劃分方法,X和Y是網(wǎng)格劃分后的數(shù)值矩陣。mesh(X,Y,Z,C)繪制四個矩陣變量的彩色網(wǎng)格面圖形,觀測點由view定義,坐標軸由axis定義,C設置顏色,由colormap實現(xiàn)。mesh(X,Y,Z)使用C=Z,即顏色正比于圖高。mesh(x,y,Z,C)由兩個向量代替矩陣,要求length(x)=n,length(y)=m,且[m,n]=size(Z)示例1:x=-2:0.1:2;y=-2:0.1:2;[xx,yy]=meshgrid(x,y);zz=xx.^2+yy.^2;%ii=find(xx.^2+yy.^2>4);zz(ii)=NaN;surf(xx,yy,zz);x=-10:0.5:10;y=-8:0.5:8;[x,y]=meshgrid(x,y);z=sin(sqrt(x.^2+y.^2))./sqrt(x.^2+y.^2);mesh(x,y,z);示例2:(2)著色函數(shù)surfsurf(X,Y,Z,C)輸入?yún)?shù)的設置和mesh相同,不同的是mesh繪制的是網(wǎng)格圖,而surf繪制的著色的三維表面。兩者對比如下圖所示函數(shù)名說明函數(shù)名說明函數(shù)名說明bar3三維條形圖surfc著色圖+等高線comet3三維彗星圖trisurf三角形表面圖ezgraph3函數(shù)控制繪制圖waterfall瀑布圖pie3三維餅狀圖scatter3三維散射圖cylinder柱面圖stem3三維離散數(shù)據(jù)圖sphere球面圖trimesh三角形網(wǎng)格圖(3)特殊的三維繪圖命令(4)旋轉(zhuǎn)曲面圖cylinder[X,Y,Z]=cylinder(r)這里的r表示構成旋轉(zhuǎn)曲面的曲線。方法一:
Matlab程序如下。x=0:10:600;[X,Y,Z]=cylinder(30*exp(-x/400).*sin((x+25*pi)/100)+130);surf(X,Y,Z)方法二:將旋轉(zhuǎn)曲面用參數(shù)方程表示。
解因為這里的函數(shù)是隱函數(shù),化成顯函數(shù)后有兩支,必須使用參數(shù)方程,旋轉(zhuǎn)面的參數(shù)方程為畫圖的Matlab程序如下:alpha=[0:0.1:2*pi]';beta=0:0.1:2*pi;x=4*cos(alpha)*ones(size(beta));y=(5+4*sin(alpha))*cos(beta);z=(5+4*sin(alpha))*sin(beta);surf(x,y,z)畫圖的Matlab程序也可以寫成x=@(alpha,beta)4*cos(alpha);y=@(alpha,beta)(5+4*sin(alpha))*cos(beta);z=@(alpha,beta)(5+4*sin(alpha))*sin(beta);ezsurf(x,y,z)(5)繪制柱面圖柱面平行于某個坐標軸,方程中不出現(xiàn)某個坐標軸的變量,方程表示為F(x,y)=0或者F(x,z)=0或者F(y,z)=0示例一:畫出方程
表示的柱面解:方程中的x是自變量矩陣,z是因變量,則另一個自變量矩陣為y,自變量平面是xoy面,x軸是真正的自變量,y軸是柱面方向。Matlab程序如下:u=linspace(-5,5,10)';%設定參數(shù)列向量uv=linspace(-5,10,10);%設定參數(shù)行向量vX=u*ones(size(v));%構成自變量矩陣XY=ones(size(u))*v;%構成自變量矩陣YZ=2-X.^2;%求因變量Zmesh(X,Y,Z)(6)其他二次曲面Matlab中使用繪圖命令ezmesh或ezsurf也很方便,只需要把曲面方程寫成兩個變量的顯函數(shù)方程或參數(shù)方程即可。對于旋轉(zhuǎn)面,如果母線的方程可以表示成關于旋轉(zhuǎn)軸變量的顯式函數(shù),則可以直接使用Matlab工具箱中的命令cylinder,否則必須把旋轉(zhuǎn)面化成參數(shù)方程,然后使用ezmesh或ezsurf命令繪圖。對于其它的二次曲面,如果可以寫成顯函數(shù)直接使用命令ezmesh或ezsurf,否則必須先化成參數(shù)方程。幾個示例:(1)x=@(s,t)3*tan(s)*cos(t);y=@(s,t)2*tan(s)*sin(t);z=@(s,t)tan(s);ezsurf(x,y,z)(2)ellipsoid(0,0,0,3,2,sqrt(6))(3)ezsurf(@(x,y)x*y)(4)x=@(s,t)3*cos(s);y=@(s,t)2*sin(s);z=@(s,t)t;ezmesh(x,y,z)(7)Matlab三維散點插值曲面圖的繪制1、scatter3函數(shù),調(diào)用方法:scatter3(X,Y,Z)示例1:[x,y,z]=sphere(16);X=[x(:)*.5x(:)*.75x(:)];Y=[y(:)*.5y(:)*.75y(:)];Z=[z(:)*.5z(:)*.75z(:)];S=repmat([1.75.5]*10,numel(x),1);C=repmat([123],numel(x),1);scatter3(X(:),Y(:),Z(:),S(:),C(:),'filled'),view(-60,60)示例2:x=[4229042.63
4230585.02
4231384.96
4231773.63
4233028.58
4233296.71
4235869.68
4236288.29];
y=[431695.4
441585.8
432745.6436933.7
428734.4
431946.3428705.0
432999.5];
z=[1.0191.023
1.011
1.022
1.020
1.022
1.022
1.023];
scatter3(x,y,z)2、griddata函數(shù),用來產(chǎn)生經(jīng)插值后均勻間隔數(shù)據(jù)作圖。常用的調(diào)用方法是:[XI,YI,ZI]=griddata(x,y,z,XI,YI,’method’),其中x,y,z來自關系式z=f(x,y),也可以是離散的數(shù)據(jù)點,ZI是有XI和YI插值后得到的對應點。其中method可以是linear,cubic和nearest。V1=[110;
-110;
-1-10;
1-10];x=V1(:,1);y=V1(:,2);z=V1(:,3);xmin=min(x);xmax=max(x);ymin=min(y);ymax=max(y);x0=linspace(xmin,xmax,20);y0=linspace(ymin,ymax,20);[x0,y0]=meshgrid(x0,y0);z0=griddata(x,y,z,x0,y0,'v4');figure;holdon;view(3);plot3(x,y,z,'r.','MarkerSize',20);plot3(x0,y0,z0,'k.');col=zeros(size(z0));col(:,end)=1;mesh(x0,y0,z0,col)示例1:x=10*(0.5-rand(1000,1));y=10*(0.5-rand(1000,1));z=sqrt(x.*x+y.*y).*(9.995+rand(1000,1)/100);clf;plot3(x,y,z,'rp','markerSize',4);holdon;[xx,yy]=meshgrid(linspace(min(x),max(x)),linspace(min(y),max(y)));zz=griddata(x,y,z,xx,yy,'cubic');mesh(xx,yy,zz);shadinginterp;colormapgray;holdon;示例2:示例3:x=rand(100,1)*4-2;y=rand(100,1)*4-2;z=x.*exp(-x.^2-y.^2);ti=-2:.25:2;[xi,yi]=meshgrid(ti,ti);zi=griddata(x,y,z,xi,yi);mesh(xi,yi,zi),holdon,plot3(x,y,z,'o'),holdoff3、TriScatteredInterp函數(shù),該函數(shù)可以看作是griddata的升級版,可以取代griddata對離散數(shù)據(jù)點進行插值。主要用于不規(guī)則數(shù)據(jù)點的插值。主要調(diào)用方法:F=TriScatteredInterp(x,y,z),相當于定義了一個關于x,y,z的插值函數(shù)。示例1:x=10*(0.5-rand(1000,1));y=10*(0.5-rand(1000,1));%生成隨機數(shù)據(jù)z=sqrt(x.*x+y.*y).*(9.995+rand(1000,1)/100);clf;plot3(x,y,z,‘rp’,‘markerSize’,4);%繪制三維散點圖holdon;F=TriScatteredInterp(x,y,z);%可以理解為定義了一個函數(shù)F(.)[xx,yy]=meshgrid(linspace(min(x),max(x)),linspace(min(y),max(y)));zz=F(xx,yy);%把x,y的坐標輸入其中,可以計算出插值的z維度數(shù)值mesh(xx,yy,zz);%然后可以采用常規(guī)的方法繪制曲面shadinginterp;colormapgray;holdon;注:1、對F還可以設置方法F.method=‘nature’/’linear’/’nearest’,前兩個針對連續(xù)曲線。2、類似的一些地形圖的繪制也是通過這種插值的方法進行繪制。示例2:z=x.^2+y.^2;F=TriScatteredInterp(x,y,z);[xi,yi]=meshgrid(-0.3:.02:0.3,-0.0688:0.01:0.0688);zi=F(xi,yi);mesh(xi,yi,zi)xlabel('Interpolatedsurface','fontweight','b');figure;zi=xi.^2+yi.^2;mesh(xi,yi,zi)(8)四維表現(xiàn)圖針對v=v(x,y,z)類型的函數(shù),引入了三維實體的四維切片色圖,由函數(shù)slice實現(xiàn)。slice(X,Y,Z,V,Sx,Sy,Sz)繪制向量Sx,Sy,Sz中的點沿x,y,z方向切片圖,數(shù)組X,Y,Z用來定義V的坐標,V是M×N×P的矩陣。slice(X,Y,Z,V,XI,YI,ZI)繪制沿XI,YI,ZI數(shù)組定義的曲面的通過容量V的切片圖。slice(V,Sx,Sy,Sz)或slice(V,XI,YI,ZI)默認X=1:N,y=1:M,Z=1:Pslice(...,’method’)由method指定使用的插值方法,可以為linear,cubic或nearestH=slice(...)返回處理surface對象的向量。3.4
Matlab圖形處理的基本技術1、圖形的控制圖形處理的基本技術包括圖形控制、圖形標注、圖形保持以及子圖的繪制等,前三項除了使用函數(shù)命令之外,還可以直接在生成的圖形界面內(nèi)進行對應修改。坐標軸控制函數(shù)axis
兩種調(diào)用形式:axis(V),V是一個數(shù)組,存儲坐標軸的范圍,V=[Xmin,Xmax,Ymin,Ymax,Zmin,Zmax]。axis‘控制字符串’用戶可以通過選擇不同的控制字符串完成對坐標軸的操作。坐標軸縮放函數(shù)zoom
調(diào)用形式:zoom‘控制字符串’對圖形的縮放不會改變圖形的基本結構。平面的坐標網(wǎng)圖函數(shù)grid調(diào)用形式:gridon/off圖形中繪制/取消坐標網(wǎng)格坐標軸封閉函數(shù)box調(diào)用形式:boxon/off圖形四周都顯示/常規(guī)顯示坐標軸2、圖形的標注坐標軸標注主要函數(shù)有title,xlabel,ylabel,調(diào)用形式為:xlabel(‘標注’,’屬性1’,屬性值1,’屬性2’,屬性值2,...)屬性包括字體大小,字體名,字體粗細等。例如:title(‘正弦函數(shù)’,’FontSize’,12,’FontWeight’,’bold’,’FontName’,’隸書’)標注中的特殊符號有相應的轉(zhuǎn)換字符,例如\alpha表示α,\beta表示β,\gamma表示γ,\delta表示δ等等。顯示控制\bf:黑體,\it:斜體,\rm:標準形式,\fontname{fontname}:字體名\fontsize(fontsize):字體大小。其他符號如^,{等只需使用”\”來引導即可,有分數(shù)或指數(shù)的形式,相應的指數(shù)或分母放到大括號內(nèi)即可。例如:title(‘\bfy=e^{-x^{2}/2}’);文本標注函數(shù)texttext(x,y,’標注文本或控制字符串’)x和y表示標注的位置,標注中可以實時調(diào)用返回值為字符串的函數(shù),如char,num2str等
交互式文本標注legend用于解決同一張圖中繪制多條曲線的情況。legend(’標注1’,’標注2’,....,’定位代號’)標注1,標注2等分別對應繪圖過程按繪制先后順序所生成的曲線。定位代號為0-4和-1,分別針對不同的位置,默認為1,置于圖形的右上角。③圖形的保持和子圖圖形的保持函數(shù)holdon/off子圖命令subplot(m,n,p)3.5動畫技術Matlab使科學計算余動畫自然結合,實現(xiàn)完美的效果,Matlab中有很多動畫的應用程序,如travel,truss,lorenz等。Matlab中產(chǎn)生動畫的兩種形式:1、以影片方式產(chǎn)生動畫。這種方式是以圖像的方式預存多個畫面,再將這些畫面助陣播放,即可得到動畫的效果。這種方法需要事先準備圖片,無法進行實時成像,占內(nèi)存大。產(chǎn)生動畫的方法是使用getframe命令來抓取圖形作為動畫,每個畫面都是以一個列向量的方式置于存放整個電影的矩陣M中。然后使用movie(M,k)命令來播放電影。示例:clear;s=0.2;x1=0;nframes=50;fork=1:nframesx1=x1+s;x=0:0.01:x1;y=sin(x);plot(x,y);axis([02*pi-11]);gridoff;M(k)=getframe;//將當前圖形存入Mendmovie(M,3);2、以對象方式產(chǎn)生動畫。這種方式保持圖形窗口中的大部分對象,即整個背景不變,而只更新部分運動的對象,以便加快整幅圖像的實時生成速度。缺點是無法產(chǎn)生復雜的動畫。產(chǎn)生移動的動畫效果需要先計算對象的新位置,并在新位置上顯示出對象,然后擦除原位置上的舊對象,并刷新屏幕。需要用到擦除屬性drasemode(取值有normal,xor,background,none),一般設置為xor。然后用drawnow命令刷新屏幕,有時會通過pause函數(shù)進行延遲運行。a=45;b=2;c=-300;s=0;t=0;forn=1:5000x=t-sign(s)*(sqrt(abs(b*s-c)));y=a-s;plot(x,y,'o');holdon;pause(0.1)s=x;t=y;end示例1:示例2:t=0:pi/20:2*pi;y=exp(sin(t));h=plot(t,y,'YDataSource','y');fork=1:.1:10y=exp(sin(t.*k));refreshdata(h,‘caller’);drawnow;pause(.1)end3.6
Matlab圖形用戶界面設計圖形窗口本身是由不同的圖形對象組成,如坐標軸,曲線,曲面或者文字等,Matlab給每一個圖形對象都分配了一個標識符,成為句柄(handle),可以通過該句柄對對象的屬性進行編程控制。直接對圖形句柄進行操作的繪圖方法稱為底層繪圖操作。GUI就是由窗口、菜單、對話框等各種圖形元素組成的用戶界面。1、創(chuàng)建圖形對象的底層函數(shù)。(1)h=figure(n),創(chuàng)建圖形窗口,n為窗口序號;(2)h=uicontrol(‘property’,value),圖形界面控制,property和value確定控制類型,如BackGroundColor,CallBack,F(xiàn)ontName等(3)h=uimenu(‘property’,value),創(chuàng)建用戶界面菜單(4)h=axes(‘property’,RECT),創(chuàng)建軸對象,RECT用于定義軸對象的位置和大小。(5)h=line(x,y,z),創(chuàng)建線對象,二維用x和y。(6)h=patch(x,y,z,c),創(chuàng)建塊對象,x,y,z定義多邊形,c填充顏色。(7)h=surface(x,y,z,c)創(chuàng)建面對象,x,y,z定義三維曲面坐標,c定義顏色矩陣。(8)h=image(x)顯示圖像,x為圖像矩陣(9)h=text(x,y,’string’)標注文字示例1:xdata=[22025;
28245;
88248];ydata=[44420;
84622;
40400];cdata=[1504610;
12579;
23083];hp=patch(xdata,ydata,cdata,'Marker','o','MarkerFaceColor','flat','FaceColor','none')set(hp,‘EdgeColor’,‘g’)或者set(hp,'EdgeColor','none')示例2:t=0:pi/20:2*pi;hline1=plot(t,sin(t),'k');hline2=line(t+.06,sin(t),'LineWidth',4,'Color',[.8.8.8]);2、圖形對象屬性的操作(1)對象屬性的獲取。主要命令有:get:獲得句柄圖形對象的屬性和返回某些對象的句柄值。get(h),get(gcf)set:改變圖形對象的屬性。gcf:當前窗口對象的句柄,對應Figure。h=gcf:返回當前窗口對象的句柄。gca:當前軸對象的句柄,對應Axes。delete(gcf):刪除當前窗口的屬性。示例1:h=figure(1);h1=line(2:36,3:37);h3
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 丙綸纖維在無毒染色中的應用考核試卷
- 不付錢轉(zhuǎn)讓合同范本
- 文具行業(yè)渠道服務滿意度調(diào)查與分析考核試卷
- oa辦公軟件合同范本
- 農(nóng)村簡裝房屋買賣合同范本
- 休養(yǎng)所社區(qū)養(yǎng)老服務體系建設與完善計劃考核試卷
- 醫(yī)院采購電器合同范本
- 企業(yè)教育培訓的技能與技能發(fā)展路徑考核試卷
- 住宅裝修中的智能家居控制系統(tǒng)選型考核試卷
- 冷庫庫房建設合同范本
- 2023年上海青浦區(qū)區(qū)管企業(yè)統(tǒng)一招考聘用筆試題庫含答案解析
- 2023版押品考試題庫必考點含答案
- 植物之歌觀后感
- 空氣能熱泵安裝示意圖
- 建筑工程施工質(zhì)量驗收規(guī)范檢驗批填寫全套表格示范填寫與說明
- 2020年中秋國慶假日文化旅游市場安全生產(chǎn)檢查表
- 昆明天大礦業(yè)有限公司尋甸縣金源磷礦老廠箐-小凹子礦段(擬設)采礦權出讓收益評估報告
- 心有榜樣行有力量 -從冬奧冠軍徐夢桃身上感受青春奮斗初中主題班會
- GB/T 3860-1995文獻敘詞標引規(guī)則
- 七年級英語下冊閱讀理解10篇
- 設計質(zhì)量、進度保證措施
評論
0/150
提交評論