完整版009三维绘图Word格式.docx
《完整版009三维绘图Word格式.docx》由会员分享,可在线阅读,更多相关《完整版009三维绘图Word格式.docx(12页珍藏版)》请在冰豆网上搜索。
origin'
xlabel('
X'
ylabel('
Y'
zlabel('
Z'
grid;
运行结果:
二.三维曲面
即二元函数z=f(x,y)的图像,定义域(x,y的范围)选XY平面上矩形区域,然后把矩形定义域分割成若干小矩形块(中间生成网格点),再根据函数在各个网格点上的取值(z值)绘制三维图形。
1.利用meshgrid函数分割定义域生成网格点
x=a:
dx:
b;
y=c:
dy:
d;
[X,Y]=meshgrid(x,y);
当x=y时,可以写成meshgrid(x)
2.绘制三维曲面
mesh()用来绘制三维网格图,而surf()用来绘制三维曲面图,各线条之间的补面用颜色填充。
其调用格式为:
mesh(x,y,z,c)
surf(x,y,z,c)
一般x,y是两个一维向量,按照前面分析,z必须是二维矩阵【length(y)×
length(x)】;
c用于指定在不同高度下的颜色范围,默认c=z,即颜色的与图形的高度成正比。
例2
(1)mesh()绘制三维网格图示例【线条有颜色,线条间补面无颜色】
x=0:
0.1:
[x,y]=meshgrid(x);
z=sin(y).*cos(x);
mesh(x,y,z);
x-axis'
),ylabel('
y-axis'
),zlabel('
z-axis'
mesh'
pause;
(2)surf()绘制三维曲面图示例【线条都是黑色,线条间补面有颜色,且网格图线条颜色和补面颜色都是沿z轴按照图形高度变化的】
surf(x,y,z);
surf'
(3)plot3()绘制三维曲面图示例【三维曲线组合而成】
plot3(x,y,z);
plot3-1'
3.特殊功能的mesh()和surf()函数【其用法类似】
meshc()和surfc()——在xy平面上绘制曲面在z轴方向的等高线;
meshz()——在xy平面上绘制曲面的底座;
surfl()——具有光照效果。
例3在xy平面内选择[-8,8]×
[-8,8]绘制函数,
[x,y]=meshgrid(-8:
0.5:
8);
z=sin(sqrt(x.^2+y.^2))./sqrt(x.^2+y.^2+eps);
subplot(2,2,1);
meshc(x,y,z);
meshc'
subplot(2,2,2);
meshz(x,y,z);
meshz'
subplot(2,2,3);
surfc(x,y,z);
surfc'
subplot(2,2,4);
surfl(x,y,z);
title('
surfl'
4.特殊的三维曲面
(1)[x,y,z]=sphere(n);
mesh(x,y,z)
——单位球面【n默认是20,越大越圆滑】;
(2)[x,y,z]=cylinder(R,n);
——柱面【R半径向量,n同上】
例:
cylinder(3)生成一个圆柱;
cylinder([10,1])生成一个圆锥;
pi/100:
4*pi;
R=sin(t);
cylinder(R,30)生成一个正弦圆柱面。
(3)peaks函数,称为多峰函数,常用于三维曲面的演示。
例4绘制特殊三维曲面
pi/20:
[x,y,z]=cylinder(2+sin(t),30);
subplot(1,3,1);
subplot(1,3,2);
[x,y,z]=sphere;
subplot(1,3,3);
[x,y,z]=peaks(30);
meshz(x,y,z);
5.其他三维图形
介绍二维图形时,曾提到条形图、杆图、饼图和填充图等特殊图形,它们还可以以三维形式出现,其函数分别为bar3(),stem3(),pie3()和fill3()
另外,还有瀑布图waterfall(),二维、三维等高线图contour()和contour3()
例5
(1)绘制魔方阵的三维条形图;
(2)以三维杆图形式绘制曲线y=2sinx;
(3)已知x=[2347,1827,2043,3025],绘制三维饼图
(4)用随机的顶点坐标值画出五个黄色三角形
bar3(magic(4));
y=2*sin(0:
pi/10:
2*pi);
stem3(y);
pie3([2347,1827,2043,3025]);
fill3(rand(3,5),rand(3,5),rand(3,5),'
y'
例6绘制多峰函数的瀑布图和等高线图。
subplot(1,2,1);
[X,Y,Z]=peaks(30);
waterfall(X,Y,Z);
XX'
YY'
ZZ'
subplot(1,2,2);
contour3(X,Y,Z,12,'
k'
%其中12代表高度的等级数
xlabel('
三.三维图形的精细处理
1.视点处理
现实世界里从不同的角度观察物体,所看到的物体形状是不一样的。
Matlab提供了设置视点的view()函数:
view(az,el)
其中az为方位角,el为仰角,均以度为单位。
系统默认的为方位角为-37.5度,仰角30度。
例7从不同视点绘制多峰函数曲面
mesh(peaks);
view(-37.5,30);
1'
view(0,90);
2'
view(90,0);
3'
view(-7,-10);
4'
2.色彩处理
(1)色图——设置当前图形窗的着色。
colormap(m×
3矩阵);
或colormap(系统预定义色图名);
(2)浓淡处理
shading+faceted(默认,立体感强)/interp(细腻)
(3)透明控制——例如alpha(0.5)表示半透明
(4)灯光设置light()与照明设置lighting()【略】
3.图形的裁剪处理
Matlab中用NaN表示“非数”,将图形中需要裁剪部分对应的函数值设置成NaN,这样在绘制图形时,函数值为NaN的部分将不显示出来,从而达到对图形进行裁剪的目的。
例8绘制两个球面,其中一个在另一个里面,将外面的球裁掉一部分,以便能看到里面的球。
[x,y,z]=sphere(25);
%生成外面的大球
z1=z;
z1(:
1:
4)=NaN;
%将大球裁去一部分
c1=ones(size(z1));
surf(3*x,3*y,3*z1,c1);
%生成里面的小球
holdon
z2=z;
c2=2*ones(size(z2));
c2(:
4)=3*ones(size(c2(:
4)));
surf(1.5*x,1.5*y,1.5*z2,c2);
colormap([010;
0.500;
100]);
gridon
holdoff
四.隐函数作图——ezplot函数(见上节)
其他隐函数绘图还有,ezpolar,ezcontour,ezplot3,ezmesh,ezmeshc,ezsurf,ezsurfc