本章學習目標 學習三維繪圖的基本技巧 學習peaks() 函數的用法 學習二維與三維等高線圖的繪製 學習三維圖形的編修 第六章 三維空間繪圖 本章學習目標 學習三維繪圖的基本技巧 學習peaks() 函數的用法 學習二維與三維等高線圖的繪製 學習三維圖形的編修
基本三維繪圖 對於函數 f(x,y) 而言,每給一組(x,y) ,便能計算z=f(x,y)
繪製三維的網格圖
利用mesh() 繪製三維的網格圖
mesh() 的使用範例 >> xx=[2 3 4;2 3 4;2 3 4;2 3 4] xx = 2 3 4 2 3 4 >> yy=[3 3 3;2 2 2;1 1 1;0 0 0] yy = 3 3 3 2 2 2 1 1 1 0 0 0 >> zz=[8 8 9;8 8 9;7 7 7;7 7 6] zz = 8 8 9 7 7 7 7 7 6 >> mesh(xx,yy,zz) >> mesh(zz)
meshgrid() 函數 >> vx=2:4 vx = 2 3 4 >> vy=0:3 vy = 0 1 2 3 2 3 4 >> vy=0:3 vy = 0 1 2 3 >> [xx,yy]=meshgrid(vx,vy) xx = yy = 0 0 0 1 1 1 2 2 2 3 3 3 >> zz=sqrt(xx.*yy) zz = 0 0 0 1.4142 1.7321 2.0000 2.0000 2.4495 2.8284 2.4495 3.0000 3.4641 >> mesh(xx,yy,zz)
Matlab提供了meshgrid函數,可以建立xx與yy矩陣: >> x=linspace(-2,2,30); >> y=linspace(-2,2,30); >> [xx,yy]=meshgrid(x,y); >> zz=xx.*exp(-xx.^2-yy.^2); >> mesh(xx,yy,zz)
meshc() 與waterfall() 函數 >> x=linspace(-8,8,30); >> y=x; >> [xx,yy]=meshgrid(x,y); >> expr=sqrt(xx.^2+yy.^2); >> zz=sin(expr)./(expr+eps); >> meshc(xx,yy,zz) >> waterfall(xx,yy,zz) Matlab內建常數:eps=2.2x10-16
三維曲面圖-surf() 與surfc() >> surf(xx,yy,zz); >> surfc(xx,yy,zz); axis tight; >> x=linspace(-7,7,32); >> y=linspace(-6,6,32); >> [xx,yy]=meshgrid(x,y); >> zz=xx./(xx.^2+yy.^2+1);
簡易的三維繪圖函數 只要給予繪圖的函數與範圍, ezmesh() 與ezsurf() 函數便可快速的繪出三維的圖形
ezmesh() 與ezsurf() 的使用範例 >> ezmesh('exp(-0.2*x)*cos(t)') >> ezsurf('y/(x^2+y^2+1)',36) >> ezmesh('exp(-0.2*x)*cos(t)',... [-pi,2*pi,-2,12],36) >> ezsurfc('y/(x^2+y^2+1)',36)
三維圖形展示函數—peaks
Peaks的語法 >> 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) >> [xx,yy,zz]=peaks(32); >> surfc(xx,yy,zz); >> peaks(24);
t.*sin(t),t.*cos(t),-t,'-bd'); 空間曲線繪圖 >> t=linspace(0,30,120); >> plot3(t.*sin(t),t.*cos(t),t,'-ro', t.*sin(t),t.*cos(t),-t,'-bd'); >> plot3(t.*sin(t),t.*cos(t),t,'-ro');
等高線繪圖 等高線圖(contour plot)是把三維的圖中,高度相等的點連接起來,即成等高線圖
等高線繪圖的範例 >> [xx,yy,zz]=peaks; >> contour(xx,yy,zz) >> contourf(xx,yy,zz,20) >> contourf(zz,[-2,0,3,7])
標註等高線的值 >> [xx,yy,zz]=peaks; >> cmat=contour(xx,yy,zz); >> clabel(cmat)
三維的等高線圖 >> zz=peaks; >> contour3(zz);
三維圖形的基本編修 >> zz=peaks; >> mesh(zz);axis tight; >> hidden off; >> box on; >> axis off;
改變三維圖形的視角 仰角是從x-y平面上數起,往上為正,往下為負 方位角是從x軸數起,逆時針方向為正
view() 的使用範例 >> peaks; >> view(60,30);
修改三維圖形的曲面顏色 >> colormap >> peaks; >> colorbar; ans = 0 0 0.5625 0 0 0.6250 0 0 0.6875 0 0 0.7500 0 0 0.8125 0 0 0.8750 0 0 0.9375 : : : 0.5625 0 0 0.5000 0 >> peaks; >> colorbar;
colormap() 函數的使用
colormap() 的使用 >> peaks; >> colormap(cm);colorbar; 0 0 1;1 0 1] cm = 1 0 0 1 1 0 0 1 1 0 0 1 1 0 1
產生顏色對應表的函數
顏色對應表函數的使用 >> colormap(hot(32));colorbar; >> size(spring) ans = 3 >> colormap('default');colorbar; >> colormap spring; colorbar; >> size(colormap) ans = 64 3
Colormap Editor對話方塊 從Edit選單中選擇Colormap來編輯顏色對應表
Exercises(1/1) 請分別以mesh與surf函數繪製下列函數的圖形。 請分別以ezmesh與ezsurf函數繪製下列函數的圖形。 請以實線、紅色、圓形200個資料點繪製下列函數的圖形。