除了上面討論的三維圖形外,常用的圖形還有瀑布圖和三維曲面的等高線圖。繪制瀑布圖用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ù)view,其調用格式為:
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ù),利用這些特性,可以將圖形中需要裁剪部分對應的函數(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ù)的顯式表達式,可以先設置自變量向量,然后根據(jù)表達式計算函數(shù)向量,從而用plot等函數(shù)繪制出圖形。但是當函數(shù)采用隱函數(shù)形式時,如: ,則很難利用上述方法繪制圖形。Matlab提供了一個ezplot函數(shù)繪制隱函數(shù)圖形。用法如下:
①???? 對于函數(shù)f=f(x),ezplot的調用格式為:
ezplot(f),在默認區(qū)間(-2pi,2pi)繪制圖形。
ezplot(f,[a,b]),在區(qū)間(a,b)繪制
②???? 對于隱函數(shù)f=f(x,y),ezplot的調用格式為;
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ù)的調用格式為:
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。
評論
查看更多