matlab三维立体画图ppt

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

MATLAB程式設計入門篇三維立體繪圖張智星jang@cs.nthu.edu.tw~jang清大資工系多媒體檢索實驗室MATLAB程式設計入門篇:三維立體繪圖4-1基本立體繪圖指令mesh和surf:mesh:可畫出立體的「網狀圖」(MeshPlots)surf:可畫出立體的「曲面圖」(SurfacePlots)範例4-1:plotxyz001.mz=[021;324;444;768];mesh(z);xlabel('X軸=columnindex');%X軸的說明文字ylabel('Y軸=rowindex');%Y軸的說明文字MATLAB程式設計入門篇:三維立體繪圖4-1基本立體繪圖指令範例4-1:plotxyz001.mMATLAB程式設計入門篇:三維立體繪圖4-1基本立體繪圖指令範例4-2:plotxyz002.m若要將與曲面對應的x座標和y座標都一併畫出來,還是可以使用mesh指令z=[021;324;444;768];mesh(z);xlabel('X軸=columnindex');%X軸的說明文字ylabel('Y軸=rowindex');%Y軸的說明文字fori=1:size(z,1)forj=1:size(z,2)h=text(j,i,z(i,j),num2str(z(i,j)));%標示曲面高度set(h,'hori','center','vertical','bottom','color','r');%改變位置及顏色endendMATLAB程式設計入門篇:三維立體繪圖4-1基本立體繪圖指令範例4-2:plotxyz002.mMATLAB程式設計入門篇:三維立體繪圖4-1基本立體繪圖指令範例4-3:plotxyz011.mmeshgrid的作用是產生x及y(均為向量)為基準的格子點(GridPoints),其輸出為xx及yy(均為矩陣),分別代表格子點的x座標及y座標。MATLAB程式設計入門篇:三維立體繪圖4-1基本立體繪圖指令範例4-3:plotxyz011.mx=3:6;y=5:9;[xx,yy]=meshgrid(x,y);%xx和yy都是矩陣zz=xx.*yy;%計算函數值zz,也是矩陣subplot(2,2,1);mesh(xx);title('xx');axistightsubplot(2,2,2);mesh(yy);title('yy');axistightsubplot(2,2,3);mesh(xx,yy,zz);title('zz對xx及yy作圖');axistightcolormap(zeros(1,3));%以黑色呈現MATLAB程式設計入門篇:三維立體繪圖4-1基本立體繪圖指令範例4-3:plotxyz011.mMATLAB程式設計入門篇:三維立體繪圖範例4-4:plotxyz01.m使用linspace來產生較密集的資料,以便畫出由函數形成的立體網狀圖x=linspace(-2,2,25);%在x軸[-2,2]之間取25點y=linspace(-2,2,25);%在y軸[-2,2]之間取25點[xx,yy]=meshgrid(x,y);%xx和yy都是25×25的矩陣zz=xx.*exp(-xx.^2-yy.^2);%計算函數值,zz也是25×25的矩陣mesh(xx,yy,zz);%畫出立體網狀圖4-1基本立體繪圖指令MATLAB程式設計入門篇:三維立體繪圖4-1基本立體繪圖指令範例4-4:plotxyz01.mMATLAB程式設計入門篇:三維立體繪圖範例4-5:plotxyz01.msurf和mesh指令的用法類似x=linspace(-2,2,25);%在x軸[-2,2]之間取25點y=linspace(-2,2,25);%在y軸[-2,2]之間取25點[xx,yy]=meshgrid(x,y);%xx和yy都是25×25的矩陣zz=xx.*exp(-xx.^2-yy.^2);%zz也是25×2的矩陣surf(xx,yy,zz);%畫出立體曲面圖4-1基本立體繪圖指令MATLAB程式設計入門篇:三維立體繪圖4-1基本立體繪圖指令範例4-5:plotxyz01.mMATLAB程式設計入門篇:三維立體繪圖4-1基本立體繪圖指令peaks:為了方便測試立體繪圖,MATLAB提供了一個peaks函數,可產生一個凹凸有致的曲面,包含了三個局部極大點(LocalMaxima)及三個局部極小點(LocalMinima)其方程式為:yxexxyeexyxyxy311051321351222222()()()()MATLAB程式設計入門篇:三維立體繪圖4-1基本立體繪圖指令畫出此函數的最快方法,即是在MATLAB命令視窗直接鍵入peaks,可得到下列方程式z=3*(1-x).^2.*exp(-(x.^2)-(y+1).^2)...-10*(x/5-x.^3-y.^5).*exp(-x.^2-y.^2)...-1/3*exp(-(x+1).^2-y.^2)MATLAB程式設計入門篇:三維立體繪圖4-1基本立體繪圖指令peaks的圖形MATLAB程式設計入門篇:三維立體繪圖4-1基本立體繪圖指令meshz:meshz指令有將曲面加上「圍裙」或「舞台」的效果範例4-6:plotxyz03.m[x,y,z]=peaks;meshz(x,y,z);axistight;MATLAB程式設計入門篇:三維立體繪圖4-1基本立體繪圖指令範例4-6:plotxyz03.mMATLAB程式設計入門篇:三維立體繪圖4-1基本立體繪圖指令waterfall:waterfall指令可在x方向或y方向產生水流效果範例4-7:plotxyz04.m[x,y,z]=peaks;waterfall(x,y,z);axistight;MATLAB程式設計入門篇:三維立體繪圖4-1基本立體繪圖指令範例4-7:plotxyz04.mMATLAB程式設計入門篇:三維立體繪圖4-1基本立體繪圖指令meshc:meshc可同時畫出網狀圖與「等高線」(Contours)範例4-8:plotxyz05.m[x,y,z]=peaks;meshc(x,y,z);axistight;MATLAB程式設計入門篇:三維立體繪圖4-1基本立體繪圖指令範例4-8:plotxyz05.mMATLAB程式設計入門篇:三維立體繪圖4-1基本立體繪圖指令plot3:plot3指令可畫出三度空間中的曲線範例4-9:plotxyz06.mt=linspace(0,20*pi,501);%在0及20*pi中間取501點plot3(t.*sin(t),t.*cos(t),t);%畫出tsin(t),tcos(t),t的曲線MATLAB程式設計入門篇:三維立體繪圖4-1基本立體繪圖指令範例4-9:plotxyz06.mMATLAB程式設計入門篇:三維立體繪圖4-1基本立體繪圖指令plot3:亦可同時畫出兩條三度空間中的曲線範例4-10:plotxyz07.mt=linspace(0,10*pi,501);plot3(t.*sin(t),t.*cos(t),t,t.*sin(t),t.*cos(t),-t);%同時畫兩條曲線MATLAB程式設計入門篇:三維立體繪圖4-1基本立體繪圖指令範例4-10:plotxyz07.mMATLAB程式設計入門篇:三維立體繪圖4-1基本立體繪圖指令plot3:如果輸入引數是三個大小相同的矩陣x、y、z,那麼plot3會依序畫出每個行向量在三度空間所對應的曲線範例4-11:plotxyz08.m[x,y]=meshgrid(-2:0.1:2);z=y.*exp(-x.^2-y.^2);plot3(x,y,z);MATLAB程式設計入門篇:三維立體繪圖4-1基本立體繪圖指令範例4-11:plotxyz08.mMATLAB程式設計入門篇:三維立體繪圖4-1基本立體繪圖指令plot3:上例中,所有的資料點都必需是在格子點上,MATLAB才能根據每點的高度來作圖。如果所給的資料點不在格子點上,我們必需先用griddata指令來進行內插法以產生格子點MATLAB程式設計入門篇:三維立體繪圖4-1基本立體繪圖指令範例4-12:plotxyz09.mx=6*rand(100,1)-3;%x為介於[-3,3]的100點亂數y=6*rand(100,1)-3;%y為介於[-3,3]的100點亂數z=peaks(x,y);%z為peaks指令產生的100點輸出[X,Y]=meshgrid(-3:0.1:3);Z=griddata(x,y,z,X,Y,'cubic');mesh(X,Y,Z);holdonplot3(x,y,z,'.','MarkerSize',16);%晝出100個取樣holdoffaxistightMATLAB程式設計入門篇:三維立體繪圖4-1基本立體繪圖指令範例4-12:plotxyz09.mMATLAB程式設計入門篇:三維立體繪圖4-1基本立體繪圖指令整理:基本三維立體繪圖指令的列表類別指令說明網狀圖mesh,ezmesh立體網狀圖meshc,ezmeshc網狀圖加上等高線meshz網狀圖加上“圍裙”(或“舞臺”)曲面圖surf,ezsurf立體曲面圖surfc,ezsurfc曲面圖加上等高線surfl曲面圖加上光源MATLAB程式設計入門篇:三維立體繪圖4-1基本立體繪圖指令整理:基本三維立體繪圖指令的列表類別指令說明曲線圖plot3,ezplot3立體曲線圖低階函數surfaceSurf用到的低階指令line3Plot3用到的低階指令等高線contour,ezcontour平面上的等高線contour3空間中的等高線影像表示pcolor在二維平面中以顏色表示曲面的高度MATLAB程式設計入門篇:三維立體繪圖4-1基本立體繪圖指令ezmesh,ezsurf:如果我們只是要很快地檢視一個具有二個輸入的函數的圖形,就可以使用ezmesh或是ezsurf等來快速地畫出函數的曲面圖形範例4-13:plotxyz091.msubplot(2,2,1);ezmesh('sin(x)/x*sin(y)/y');subplot(2,2,2);ezsurf('sin(x*y)/(x*y)');subplot(2,2,3);ezmeshc('sin(x)/x*sin(y)/y');subplot(2,2,4);ezsurfc('sin(x*y)/(x*y)');MATLAB程式設計入門篇:三維立體繪圖4-1基本立體繪圖指令範例4-13:plotxyz091.mMATLAB程式設計入門篇:三維立體繪圖4-2立體圖形與圖軸的基本技巧hiddenoff:在繪製網狀圖時,MATLAB會隱藏被遮蓋的網線,若要使被遮蓋的網線亦能呈現出來,可用hiddenoff指令若再鍵入hiddenon,則恢復原先的設定範例4-14:plotxyz10.m[x,y,z]=peaks;mesh(x,y,z);hiddenoffaxistightMATLAB程式設計入門篇:三維立體繪圖4-2立體圖形與圖軸的基本技巧範例4-14:plotxyz10.mMATLAB程式設計入門篇:三維立體繪圖4-2立體圖形與圖軸的基本技巧整理:以on/off來切換的指令:指令說明hiddenon/off隱藏(on)或顯示(off)被遮蓋的網線。zoomon/off允許(on)或取消(off)以滑鼠點選來放大圖形。rotate3don/off允許(on)或取消(off)以滑鼠點選來旋轉三維圖軸。axison/off顯示(on)或不顯示(off)圖軸。boxon/off顯示(on)或不顯示(off)圖軸的外框。holdon/off在繪製新圖時,保留(on)或消去(off)舊圖。moreon/off允許(on

1 / 64
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功