除了上面討論的三維圖形外,常用的圖形還有瀑布圖和三維曲面的等高線圖。繪制瀑布圖用waterfall函數,用法和meshz函數相似,只是它的網格線在x軸方向出現,具有瀑布效果。等高線圖分二維和三維兩種形式,分別使用函數contour和contour3繪制。
例521 繪制多峰函數的瀑布圖和等高線圖。
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代表高度的等級數
xlabel('XX');ylabel('YY');zlabel('ZZ');
三.三維圖形的精細處理
一.視點處理
在日常生活中,從不同的角度觀察物體,所看到的物體形狀是不一樣的。同樣,從不同視點繪制的三維圖形的形狀也是不一樣的。視點位置可由方位角和仰角表示。
方位角
Matlab提供了設置視點的函數view,其調用格式為:
view(az,el)
其中az為方位角,el為仰角,它們均以度為單位。系統默認的視點定義為方位角為-37.5度,仰角30度。
例522 從不同視點繪制多峰函數曲面。
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常數可以用于表示那些不可使用的數據,利用這些特性,可以將圖形中需要裁剪部分對應的函數值設置成NaN,這樣在繪制圖形時,函數值為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
色圖中使用三種顏色,外面的球是綠色,里面的球采用深淺不同的兩種紅色。
四.隱函數作圖
如果給定了函數的顯式表達式,可以先設置自變量向量,然后根據表達式計算函數向量,從而用plot等函數繪制出圖形。但是當函數采用隱函數形式時,如: ,則很難利用上述方法繪制圖形。Matlab提供了一個ezplot函數繪制隱函數圖形。用法如下:
①???? 對于函數f=f(x),ezplot的調用格式為:
ezplot(f),在默認區間(-2pi,2pi)繪制圖形。
ezplot(f,[a,b]),在區間(a,b)繪制
②???? 對于隱函數f=f(x,y),ezplot的調用格式為;
ezplot(f),在默認區間(-2pi,2pi),(-2pi,2pi)繪制f(x,y)=0的圖形。
ezplot(f,[xmin,xmax,ymin,ymax]);在區間????????? 繪制圖形。
ezplot(f,[a,b]),在區間(a,b),(a,b)繪制
③???? 對于參數方程x=x(t),y=y(t),ezplot函數的調用格式為:
ezplot(x,y),在默認區間 繪制x=x(t),y=y(t)圖形。
ezplot(x,y,[tmin,tmax]),在區間(tmin,tmax)繪制x=x(t),y=y(t)圖形。
例525 隱函數繪圖舉例。
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]);
其他隱函數繪圖還有,ezpolar,ezcontour,ezplot3,ezmesh,ezmeshc,ezsurf,ezsurfc。
評論
查看更多