MATLAB 13三维图形

合集下载

matlab的空间三维作图与符号作图

matlab的空间三维作图与符号作图
10
三、加密:取更二多维的点作图举例
>> x=[0:pi/20:2*pi]; >> y=sin(x); >> plot(x,y,'.')
11
三维曲线作图过程
x t
例:绘制三维螺线:
y
sin( t )
z cos(t)
( 0 < t < 20 )
先画点,后连线
1) 计算空间离散点的坐标 (x,y,z) 2) 将这些点按顺序连接即可
调用 Matlab 的绘图命令作出曲面图形
怎样得到网格矩阵 X 和 Y ?
—— 利用 Matlab 的网格生成函数 meshgrid
5
网格生成函数
网格生成函数 [X,Y] = meshgrid(x,y) x,y 是分别对 x 变化区域和 y 变化区域进行分割后
得到的向量 X, Y 即为我们所需要的网格矩阵
>> x= -8:0.5:8; >> y= -8:0.5:8; >> [X,Y]=meshgrid(x,y); >> r=sqrt(X.^2+Y.^2)+eps; >> Z=sin(r)./r; >> mesh(X,Y,Z)
+eps?
1) x 与 y 可以取不同的步长 2) 注意这里采用的数组运算
最后一个命令能否改为 mesh(Z)?
gray cool
线性灰色系 hot 青和洋红色系 pink
黑红黄白色系 柔和色系
26
Matlab 符号作图
27
二维曲线 ezplot
二维曲线绘图命名: ezplot ezplot(f(x),[a,b])

利用Matlab的三维绘图功能绘制趋势面图形

利用Matlab的三维绘图功能绘制趋势面图形

§6.利用Matlab绘制趋势面图形1. Matlab的三维绘图函数及其功能Matlab的三维绘图函数及其功能分别见表2、表3、表4和表5中。

表2三维绘图函数Contour 二维等值线图,即从上向下看Contour3等值线图Contour3 等值线图Fill3 填充的多边形Mesh 网格图Meshc 具有基本等值线图的网格图Meshz 有零平面的网格图Pcolor 二维伪彩色绘图,即从上向下看surf图Plot3 直线图Quiver 二维带方向箭头的速度图Surf 曲面图Surfc 具有基本等值线图的曲面图Surfl 带亮度的曲面图Waterfall 无交叉线的网格图表3三维绘图工具Axis 修正坐标轴属性Clf 清除图形窗口Clabel 放置等值线标签Close 关闭图形窗口Figure 创建或选择图形窗口Getframe 捕捉动画桢Grid 放置网格Griddata 对画图用的数据进行内插Hidden 隐蔽网格图线条Hold 保留当前图形Meshgrid 产生三维绘图数据Movie 放动画Moviein 创建桢矩阵,存储动画Shading 在曲面图和伪彩色图中用分块、平滑和插值加阴影Subplot 在图形窗口内画子图Text 在指定的位置放文本Title放置标题 View改变图形的视角 Xlabel放置x 轴标记 Ylabel放置y 轴标记 Zlabel放置z 轴标记表4函数viewView(az,el) 设置视图的方位角az 和仰角elView([az,el])View([x,y,z]) 在笛卡儿坐标系中沿向量[x,y,z]正视原点设置视图,例如view([0 01])=view(0,90)View(2) 设置缺省的二维视图,az=0,el=90View(3) 设置缺省的三维视图,az=-37.5,el=30[az,el]=View 返回当前的方位角az 和仰角elView(T) 用一个4×4的转置矩阵T 来设置视图 T=View 返回当前的4×4转置矩阵表5掌握MATLAB 高级图形功能Mmcont2(X,Y,Z,C) 具有颜色映像的二维等值线图Mmcont3(X,Y,Z,C) 具有颜色映像的三维等值线图Mmspin3d(N) 旋转当前图形的三维方位角来制作动画Mmview3d用滑标来调整视角2.实例第3章第6节,分别建立了某流域1月份降水量的二次多项式和三次多项式趋势面。

Matlab二维图形和三维图形的创建

Matlab二维图形和三维图形的创建

二维图形和三维图形的创建1.生成1×10维的随机数向量a,在同一幅图片上分别用红、黄、蓝、绿色绘出其连线图、脉冲图、阶梯图和条形图,并分别标出标题“连线图”、“脉冲图”、“阶梯图”、“条形图”。

2.绘制向量x=[1 3 0.5 2.5 2]的饼形图,并把3对应的部分分离出来。

3.用hold on命令在同一个窗口绘制曲线y=sin(t),y1=sin(t+0.25) y2=sin(t+0.5),其中t=[0 10]。

t=0:1/100:10;y=sin(t);plot(t,y,'-r')hold ony1=sin(t+0.25);plot(t,y1,'--b')y2=sin(t+0.5);plot(t,y2,'-y')4.绘制曲线 x=tcos(3t)y=tsin2t 其中-π≤t≤π,步长取π/100。

要求:要图形注解、标题、坐标轴标签, 并在曲线上截取一点,将相对应的坐标值文本标注出来(ginput())。

;5.在三个子图像中,分别绘制三维曲线,三维曲面,三维网格的半径为6,坐标为(6,7,6)的由900个面构成的球面(sphere()),对每个图形标注标题6.(1)绘一个圆柱螺旋线(形似弹簧)图。

圆柱截面直径为10,高度为5,每圈上升高度为1。

如左图所示。

(2)利用(1)的结果,对程序做少许修改,得到如右图所示图形。

思考题:如果要绘制出如图所示的图形,请先指出这四个图形分别对应哪副图,以及请正确填写下列空格subplot(6 ,4 ,[2 3 4 6 7 8] );plot(1:10);grid on;subplot( 6 ,4 ,[10 11 14 15] );plot(peaks);grid on;subplot(6 ,4 ,[5 9]);plot(membrane);grid on;subplot(6, 4,[17 18 21 22]);surf(membrane);grid on;。

使用matlab绘制三维图形的方法

使用matlab绘制三维图形的方法

使用matlab 绘制三维图形的方法三维曲线plot3函数与plot 函数用法十分相似,其调用格式为: plot3(x1,y1,z1,选项1,x2,y2,z2,选项2,…,xn,yn,zn,选项n),其中每一组x,y,z 组成一组曲线的坐标参数,选项的定义和plot 函数相同。

当x,y,z 是同维向量时,则x,y,z 对应元素构成一条三维曲线。

当x,y,z 是同维矩阵时,则以x,y,z 对应列元素绘制三维曲线,曲线条数等于矩阵列数。

例 绘制三维曲线。

程序如下: t=0:pi/100:20*pi; x=sin(t); y=cos(t);z=t.*sin(t).*cos(t); plot3(x,y,z);gridtitle('Line in 3-D Space');xlabel('X');ylabel('Y');zlabel('Z'); 如下图:XLine in 3-D SpaceYZ三维曲面1.产生三维数据在MATLAB 中,利用meshgrid 函数产生平面区域内的网格坐标矩阵。

其格式为: x=a:d1:b; y=c:d2:d; [X,Y]=meshgrid(x,y);语句执行后,矩阵X 的每一行都是向量x ,行数等于向量y 的元素的个数,矩阵Y 的每一列都是向量y ,列数等于向量x 的元素的个数。

2.绘制三维曲面的函数surf 函数和mesh 函数的调用格式为:mesh(x,y,z,c):画网格曲面,将数据点在空间中描出,并连成网格。

surf(x,y,z,c):画完整曲面,将数据点所表示曲面画出。

一般情况下,x,y,z 是维数相同的矩阵。

x,y 是网格坐标矩阵,z 是网格点上的高度矩阵,c 用于指定在不同高度下的颜色范围。

例 绘制三维曲面图z=sin(x+sin(y))-x/10。

程序如下:[x,y]=meshgrid(0:0.25:4*pi); %在[0,4pi]×[0,4pi]区域生成网格坐标 z=sin(x+sin(y))-x/10; mesh(x,y,z);axis([0 4*pi 0 4*pi -2.5 1]); 如下图:-2.5-2-1.5-1-0.500.51此外,还有带等高线的三维网格曲面函数meshc 和带底座的三维网格曲面函数meshz 。

使用matlab绘制三维图形的方法

使用matlab绘制三维图形的方法

使用matlab绘制三维图形的方法要使用MATLAB绘制三维图形,首先需要了解MATLAB中的三维绘图函数和绘图选项。

下面将介绍一些常用的绘制三维图形的方法。

1.绘制基本的三维图形要绘制基本的三维图形,可以使用以下函数:- plot3(函数:用于在三维坐标系中绘制线条。

- scatter3(函数:用于在三维坐标系中绘制散点图。

- surf(函数:用于绘制三维曲面图。

- mesh(函数:用于绘制三维网格图。

- bar3(函数:用于绘制三维条形图。

- contour3(函数:用于绘制三维等高线图。

例如,下面的代码演示了如何使用plot3(函数绘制一个三维线条图:```x = linspace(0, 2*pi, 100);y = sin(x);z = cos(x);plot3(x, y, z, 'LineWidth', 2);xlabel('X');ylabel('Y');zlabel('Z');title('3D Line Plot');```2.添加颜色和纹理在绘制三维图形时,可以使用颜色和纹理来增加图形的信息。

MATLAB 提供了一系列函数来处理颜色和纹理,如:- colormap(函数:用于设置颜色映射。

- caxis(函数:用于设置坐标轴范围。

- shading(函数:用于设置颜色插值方法。

- texturemap(函数:用于设置纹理映射方法。

例如,下面的代码展示了如何使用纹理映射来绘制一个球体:```[X, Y, Z] = sphere(50);C = colormap('jet');surface(X, Y, Z, 'FaceColor', 'texturemap', 'CData', C);axis equal;```3.绘制多个数据集要在同一张图中绘制多个数据集,可以使用hold on和hold off命令。

MATLAB-图像处理之三维绘图

MATLAB-图像处理之三维绘图

(2)颜色映象使用
• 语句colormap(M)将矩阵M作为当前图形 窗口所用的颜色映象。
• 例如,colormap(cool)装入了一个有64 个输入项的cool颜色映象。
• colormap default装入了缺省的颜色映象 (hsv)。
• 函数plot、plot3、contour(等高线图) 和contour3不使用颜色映象,它们使用列 在plot颜色和线形表中的颜色。而大多数其 它绘图函数,比如mesh、surf、fill、 pcolor和它们的各种变形函数,使用当前 的颜色映象。

MMSHOW(pink(30))
• 函数mmshow取和colormap同样的输入参 量,但在这种情况下它用自己的伪彩色显 示而不是把颜色映象施加到当前图形。
• 另一种途径是使用MATLAB的函数rgbplot, 它可以把颜色映象的各列分别画成红、绿 和蓝色。
例如rgbplot(hot)
• 图中显示红色分量首先增加,然后是绿色, 最后是蓝色。
2.三维曲面/网线图
三维图形较二维图形复杂:表现在: 1. 数据的准备 2. 三维图形色彩的使用 3. 明暗处理、 4. 光照处理、 5. 视点处理等
(1)数据准备(很重要)
• 画函数 z f (x, y)所代表的三维空间曲面,需 要做以下数据准备: :
• (1)确定自变量的取值范围和取值间隔; • (2)构成自变量x,y的自变量“格点”矩阵; • (3)计算在自变量采样“格点”上的函数
• MATLAB的预定义色图矩阵CM
CM
含义
CM
含义
autumn 红、黄浓淡色
jet
蓝头红尾饱和值色
bone
蓝色调浓淡色

matlab教程三维图形

第十八章三维图形为了显示三维图形,MATLAB提供了各种各样的函数。

有一些函数可在三维空间中画线,而另一些可以画曲面与线格框架。

另外,颜色可以用来代表第四维。

当颜色以这种方式使用时,由于它不再象照片中那样显示信息的自然属性----色彩,而且也不是基本数据的内在属性,所以它称作伪彩色。

为了简化对三维图形的讨论,对颜色的介绍推迟到下一章。

在这一章,主要讨论绘制三维图形的基本概念。

18.1 函数plot3plot3命令将绘制二维图形的函数plot的特性扩展到三维空间。

函数格式除了包括第三维的信息(比如Z方向)之外,与二维函数plot相同。

plot3一般语法调用格式是plot3(x1,y1,z1,S1,x2,y2,z2,S2,…),这里x n,y n和z n是向量或矩阵,S n是可选的字符串,用来指定颜色、标记符号和/或线形。

总的来说,plot3可用来画一个单变量的三维函数。

如下为一个三维螺旋线例子:» t=0:pi/50:10*pi;» plot3(sin(t),cos(t),t)» title( ‘Helix‘ ),xlabel( ‘sint(t)‘ ),ylabel(‘cos(t)‘ ),zlabel(‘ t‘ )» text(0,0,0,‘ Origin‘ )» grid» v = axisv =-1 1 -1 1 0 40输出见图18.1.图18.1 螺旋线图从上例可明显看出,二维图形的所有基本特性在三维中仍都存在。

axis命令扩展到三维只是返回Z轴界限(0和40),在数轴向量中增加两个元素。

函数zlabel用来指定z轴的数据名称,函数grid在图底绘制三维网格。

函数test(x,y,z,‘ string‘ )在由三维坐标x,y,z所指定的位置放一个字符串。

另外,子图和多图形窗口可以直接应用到三维图形中。

在最后一章可以看到,通过指定plot命令的多个参量或使用hold命令,可以把多条直线或曲线重叠画出。

Matlab绘制三维立体图(以地质异常体为例)

Matlab绘制三维⽴体图(以地质异常体为例)前⾔:在地球物理勘探,流体空间分布等多种场景中,定位空间点P(x,y,x)的物理属性值Q,并绘制三维空间分布图,对我们洞察空间场景有⼗分重要的意义。

1. 三维⽴体图的基本要件:全空间⽹格化⽹格节点的物理属性值2.数据准备数据不易贴,我放在了百度⽹盘:,⽹盘失效了,有要的,我邮件给你发⼤概如下形式:![这⾥写图⽚描述](///20161216231845088?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveWFuZ3dlbmJvMjE0/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast) TIP:这⾥的数据矩阵为v(5276),可以看成⼀本27页纸,每页绘制了5*6的⽹格,然后27页纸叠在⼀起。

当你理解本图绘制后,数据可以随意制作。

3.主要函数:slice、isosurface、patchNOTE:想了解每个函数的⽤法可以在matlab command windows中输⼊ doc slice即可获得slice的matlab详解4.主要代码:TIP:你可以将代码复制到⼀起运⾏,此处我是单独展⽰,分别绘图1.单独切⽚,切法可⾃定义。

便于展⽰局部细节clc,clearv=csvread('vdata.txt');v=reshape(v,5,27,6);[x,y,z]=meshgrid(1:27,1:5,1:6);h=figure(1);set(h,'name','取单切⽚')subplot(221)slice(x,y,z,v,[],[1],[]);shading interpset(gca,'zdir','reverse');axis equalgrid onsubplot(222)slice(x,y,z,v,[],[2],[]);shading interpcolormap('jet')set(gca,'zdir','reverse');axis equalgrid onsubplot(223)slice(x,y,z,v,[],[3],[]);shading interpset(gca,'zdir','reverse');axis equalgrid onsubplot(224)slice(x,y,z,v,[],[4],[]);shading interpset(gca,'zdir','reverse');axis equalgrid on效果图:![这⾥写图⽚描述](///20161217000748658?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveWFuZ3dlbmJvMjE0/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast) 2.全空间⽴体切⽚h2=figure(2);set(h2,'name','全空间切⽚','MenuBar','none','ToolBar','none')slice(x,y,z,v,[1:2:27],[2 3 4],[2 3 4 5])shading interpcolorbarcolormap('jet')set(gca,'zdir','reverse');axis equalgrid onbox on效果图:![这⾥写图⽚描述](///20161217001102383?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveWFuZ3dlbmJvMjE0/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast) 3.⽴体包络图h3=figure(3);set(h3,'name','定值包络⽴体图','MenuBar','none','ToolBar','none')set(gcf,'InvertHardcopy','off')fw=350; %%此值为最外层包络⾯取值fv=isosurface(x,y,z,v,fw);p=patch(fv);set(p,'facecolor','b','edgecolor','none');patch(isocaps(x,y,z,v, fw), 'FaceColor', 'interp', 'EdgeColor', 'none');colorbarcolormap('jet')box ondaspect([1,1,1])view(3)set(gca,'zdir','reverse','color',[0.2,0.2,0.2]);camlightcamproj perspectivelighting phongaxis equalgrid ontitle(['最外层表⾯的值为: ' , num2str(fw)]);NOTE:上述代码中的fw是作主要可变参数,控制最外层包络⾯的值如下演⽰多个fw下不同的效果图:。

matlab三维绘图命令和演示

三维绘图1三维绘图指令2基本XYZ 立体绘图命令●mesh 和plot 是三度空间立体绘图的基本命令,mesh 可画出立体网状图,plot 则可画出立体曲面图,两者产生的图形都会依高度而有不同颜色。

下列命令可画出由函数形成的立体网状图:x=linspace(-2,2,25);%在x 轴上取25点 y=linspace(-2,2,25);%在y 轴上取25点[xx,yy]=meshgrid(x,y);%xx 和yy 都是25x25的矩阵zz=xx.*exp(-xx.^2-yy.^2);%计算函数值,zz 也是21x21的矩阵 mesh(xx,yy,zz);%画出立体网状图● surf 和mesh 的用法类似:x=linspace(-2,2,25);%在x 轴上取25点y=linspace(-2,2,25);%在y轴上取25点[xx,yy]=meshgrid(x,y);%xx和yy都是25x25的矩阵zz=xx.*exp(-xx.^2-yy.^2);%计算函数值,zz也是25x25的矩阵surf(xx,yy,zz);%画出立体曲面图●peaks为了方便测试立体绘图,MATLAB提供了一个peaks函数,可产生一个凹凸有致的曲面,包含了三个局部极大点及三个局部极小点,其方程式为:要画出此函数的最快方法即是直接键入peaks:peaksz=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)●我们亦可对peaks函数取点,再以各种不同方法进行绘图。

meshz可将曲面加上围裙:[x,y,z]=peaks;meshz(x,y,z);●waterfall可在x方向或y方向产生水流效果:[x,y,z]=peaks;waterfall(x,y,z);●下列命令产生在y方向的水流效果:[x,y,z]=peaks;waterfall(x',y',z');●meshc同时画出网状图与等高线:[x,y,z]=peaks;meshc(x,y,z);●surfc同时画出曲面图与等高线:[x,y,z]=peaks;surfc(x,y,z);●contour3画出曲面在三度空间中的等高线:contour3(peaks,20);●contour画出曲面等高线在XY平面的投影:contour(peaks,20);●plot3可画出三度空间中的曲线:t=linspace(0,20*pi,501);plot3(t.*sin(t),t.*cos(t),t);亦可同时画出两条三度空间中的曲线:t=linspace(0,10*pi,501);plot3(t.*sin(t),t.*cos(t),t,t.*sin(t),t.*cos(t),-t);3三维绘图的主要功能绘制三维线图绘制等高线图绘制伪彩色图绘制三维网线图?绘制三维曲面图、柱面图和球面图?绘制三维多面体并填充颜色(一)三维线图plot3?——?基本的三维图形指令调用格式:plot3(x,y,z)?——?x,y,z是长度相同的向量plot3(X,Y,Z)?——?X,Y,Z是维数相同的矩阵plot3(x,y,z,s)?——?带开关量plot3(x1,y1,z1,’s1’,?x2,y2,z2,’s2’,?…)二维图形的所有基本特性对三维图形全都适用。

matlab 三维立体绘图

[x, y, z] = peaks; waterfall(x,y,z); axis tight;
MATLAB 程序设计入门篇:三维立体绘图
NCU MCM 暑期培训
4-1 基本立体绘图指令
范例4-7:plotxyz04.m
MATLAB 程序设计入门篇:三维立体绘图
NCU MCM 暑期培训
4-1 基本立体绘图指令
MATLAB 程序设计入门篇:三维立体绘图
NCU MCM 暑期培训
4-1 基本立体绘图指令
范例4-12:plotxyz09.m
MATLAB 程序设计入门篇:三维立体绘图
NCU MCM 暑期培训
4-1 基本立体绘图指令
整理:基本三维立体绘图指令的列表
类别 指令 mesh, ezmesh 网状图 meshc, ezmeshc meshz surf, ezsurf 曲面图 surfc, ezsurfc surfl 说明 立体网状图 网状图加上等高线 网状图加上“围裙”(或“舞 台”) 三维曲面图 曲面图加上等高线 曲面图加上光源
set(h, 'hori', 'center', 'vertical', 'bottom', 'color', 'r'); % 改变位置及颜色 end end
MATLAB 程序设计入门篇:三维立体绘图
NCU CM 暑期培训
4-1 基本立体绘图指令
MATLAB 程序设计入门篇:三维立体绘图
NCU MCM 暑期培训
y = 31− x) e (
2 −x2−( y+1)2
x 3 5 −x2−y2 1 −(x+1)2−y2 −10( − x − y )e − e 5 3
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

3
如果能按列计算z,下面的脚本文件段会有所帮助:
4
当z中的元素必须一个一个地计算时,常常要求用嵌套循环进行计算。
5
13.3 网格图
利用在xy平面的矩形网格点上的z轴坐标值,MATLAB定义 了一个网格曲面。MATLAB通过将邻接的点用直线连接起来形成 网状曲面,其结果好像在数据点打结的鱼网。 [例13—5] 链接 Example03。
13.5 不规则数据的网格图和曲面图
用函数trimesh和trisurf可将不规则或非均匀间隔的数据可视化。 [例13—16] 链接 Example05。
9
伏罗诺耶(Voronoi)图是与德朗奈三角剖分关的最邻近点绘图枝术。 每个多边形围住所有比数据集合中任何其它点更接近被界定的数据点 的点。 用voronoi函数可产生数据点(x,y)的一个伏罗诺耶图。 [例13—17] 链接 Example05_1。
12
contour(x,y,z,n) 画出n条等高线; contour(z,v) 在指定的高度v上画出等高线; contour3 三维空间等高线图。该命令生成一个定义在矩形格栅上曲 面的三维等高线图。 contour3(Z) 画出三维空间角度观看矩阵z的等高线图,其中z的元 素被认为是距离xy平面的高度,矩阵z至少为2*2阶的。等高线的条数 与高度是自动选择的。若[m,n]=size(z),则x 轴的范围为[1:n],y 轴的范围为[1:m]。 contour3(Z,n) 画出由矩阵z确定的n条等高线的三维图。 contour3(Z,v) 在参量v 指定的高度上画出三维等高线,当然等高线 条数与向量v的维数相同;若想只画一条高度为h 的等高线,输入: contour3(Z,[h,h])。 [例13—20] 链接 Example07。
15
quiver: 矢量图或速度图 quiver(U,V): 在范围为x =1:n和y =1:m的坐标系中绘由U和V定义 的向量。 quiver(X,Y,U,V): 在点x和y上绘制由U、V定义的向量。 [例13—24] 链接 Example08_1。 quiver3(x,y,z,Nx,Ny,Nz): 显示了点(x,y,z)处的向量(Nx,Ny, N2)。 [例13—25] 链接 Example08_2。 fill3: 用指定的颜色填充三维多边形。 fill3(X,Y,Z,C): 填充由参数x,y 和z 确定多边形,参数c 指定颜色。
除了上例中的输入参量,函数mesh和大多数三维绘图函数 一样可按多种输入参量调用。最通常的变更方法是使用向量,将 它传递给meshgrid,以生成x与y坐标轴。
[例13—6] 链接 Example03_1。 MATLAB中用hidden命令控制网格图的透明特性。 [例13—7] 链接 Example03_2。
17
三维空间可视化的函数slice slice: 立体切片图。该命令显示通过立体图形的矩形切片图。 slice(X,Y,Z,V,sx,sy,sz): 在x轴、y轴与z轴方向上的若干点上画 切片图,各点的坐标由参量向量sx、sy与sz确定。参量X、参量Y 与参量Z为三维数组,用于指定立方体的坐标。参量X、Y 与Z 必 须有单调的、正交的间隔(如同用命令meshgrid 生成的一样)。
第十三章 三维图形
为了显示三维数据,MATLAB提供了各种各样的函数。一些函数 可在三维空间中画线,而另一些可以画曲面和线格框架。另外,颜色 可以用来代表第四维。
13.1 曲线图
plot3 将绘制二维图形的函数plot的特性扩展到三维空间。 plot3(x1,y1,z1,S1,x2,y2,z2,S2,…) 除了包括第三维的信息(比如Z方向)之外,与二维函数 plot相同。这里xn,yn和zn是向量或矩阵,Sn是可选的字符串, 用来指定颜色、标记符号和/或线形。 [例13—1] 链接 Example01。
通过鼠标,用函数rotate3d可交互式地设置视点。 rotate3d on打开基于鼠标的视图旋转,rotate3d off关闭它,没有参 量的rotate3d触发状态。
13.7 等值线图
等值线显示海拔或高度为恒值的线条。在MATLAB中,用 contour和contour3函数分别产生2维和3维等值线图。 contour(z): 把矩阵z中的值作为一个二维函数的值,等高曲线是一 个平面的曲线,平面的高度v是Matlab自动取的。 contour(x,y,z): (x,y)是平面z=0上点的坐标矩阵,z 为相应点的高 度值矩阵。
10
view函数还有另一种在某些情况下更有用的形式。 view([x y z])把视点放置在连接3维空间的原点和笛卡儿坐标(z,y,z) 的向量上。视点与原点的距离不影响视觉效果。
11
例如:view([0 -10 0]),view([0 -1 0])和view([0 0])都产生相同的视 觉效果。 此外,用[za,el]=view可得到当前视点的方位角和仰角。 [例13—19] 链接 Example06_1。
13.6 改变视角
三维图形的缺省视点是:以30度俯视z=0平面,以37.5度仰视x=0 平面。与z=0平面所成的方向角叫仰角,与x=0平面的夹角叫做方位 角。这样,缺省的三维视角方向仰角为30,方位角为-37.5。而缺省 的二维视角仰角为90,方位角为0。 view: 改变所有类型的二维和三维图形的图形视角。 view(az,el)和view([az,el ] ):将视角改变到所指定的方位角az和 仰角el。 [例13—18] 链接 Example06。
stem3:在三维空间画离散序列数据。 stem3(X,Y,Z,C,'filled'): 用延伸到x-y平面的直线画(X,Y,Z)中数据点。 可选择参量C确定标记类型和域颜色,而选择参量'fill'使标记被填充 到图。 stem3(Z): 画Z中的点,并自动产生X和Y的值。
[例13—28] 链接 Example08_5。
2
当z=f(x,y)能简化表示时,可以用数组运算在单个语句中 算出z的所有的值,这要求以合适的方向创建所有x与y值的矩 阵。 MATHWORKS公司称作为方格,用 meshgrid来执行。 [例13—4] 链接 Example02。
当函数不能像上面那样简单表示出来时,便只能用for循环或 while循环来计算z的元素。在很多情况下,有可能按行或按列 计算z。 例如,如果能按行计算z,下面的脚本文件段会有所帮助:
[例13—29] 链接 Example08_6。
[例13—30] 链接 Example08_7。
18
1
已增加维数的plot命令可以使多个二维图形沿一个轴排列起来。
[例13—2] 链接 Example01_2。 图形沿另外方向堆列。 [例13—3] 链接 Example01_3。

13.2 两个变量的标量函数
相对于plot3产生的线条图形,常希望画出两变量的标量函数, 即z=f(x,y),这里每一对x与y的值产生一个z的值。作为x与y的函 数,z的图形是三维空间中的一个曲面。为了在MATLAB里画出这 个曲面,z的值存放在一个矩阵中。象在二维插值这一节所描述的 那样,给出x与y的值作为独立的变量,z是因变量矩阵。
7
[例13—11] 链接 Example04_1。 如上面平滑色彩的例子所示,各块连接处的黑线已去掉,而且每 一补片仍保存着单一的颜色。 [例13—12] 链接 Example04_2。 如上所示的插值着色例子中,同样去掉了线条,但给各补片插值 色彩,即根据赋予顶点的色值对各补片的颜色在其区间进行插值。 很明显,插值色彩比分块和平滑需要更多的计算量。 因为曲面图不能作成透明,但在一些情况下可以很方便地移 走一部分表面以便看到表面以下部分。在MATLAB中,将期望洞孔 的数据设置为特定的NaN来实现这种功能。由于NaN没有任何值, 所有的MATLAB作图函数都忽略NaN的数据点,在该点出现的地方 留下一个洞孔。
[例13—13] 链接 Example04_3。
8
MATLAB的surf也有两个同种函数:surfc,它画出具有基础等 值线的曲面图;surfl,它画出一个有亮度的曲面图。 [例13—14] 链接 Example04_4。 surfnorm(X,Y,Z)函数: 计算由X,Y,Z所定义曲面的曲面法线,绘制 曲面图,并在曲面的数据点上绘制向量法线。 [Nx,Ny,Nz]=surfnorm(X,Y,Z): 计算三维曲面的法线并返回其分量, 但不绘制曲面图。 [例13—15] 链接 Example04_5。
6
MATLAB的mesh有两个同种函数:meshc画网格图和基础的等值 线图,meshz画包含零平面的网格图。 [例13—8] 链接 Example03_3。 函数waterfall除了网格线仅在x方向出现外,其它与mesh相同。 [例13—9] 链接 Example03_4。
13.4 曲面图
曲面图,除了各线条之间的空档(称作补片)用颜色填充以外,和网 格图看起来是一样的。这种图一般使用函数surf来绘制: [例13—10] 链接 Example04。 在曲面图里,不必考虑像网格图一样隐藏线条,但要考虑用不同的 方法对表面加色彩。MATLAB提供了平滑色彩和插值色彩功能,可以 通过调用函数shading来实现。
Pcolor函数把高度映射为一组颜色并以相同的比例显示与等值线一样 的信息,
13
pcolor 伪彩色图。 pcolor(C) 画一伪彩色图。从C 映射到当前的色图是由命令 colormap和axis定义的。 pcolor(X,Y,C) 在参数x和y指定的位置上画一由C 确定的伪彩色图。 [例13—21] 链接 Example07_1。 [例13—22] 链接 Example07_2。 contourf 填充二维等高线图。即先画出不同等高线,然后相邻的 等高线之间用同一颜色进行填充。填充用的颜色决定于当前的色图 颜色。 contourf(Z) 矩阵z的等高线图,其中z理解成距平面的高度。Z至 少为2*2 阶的。等高线的条数与高度是自动选择的。 contourf(Z,n) 画出矩阵z的n条高度不同的等高线。 contourf(Z,v) 画出矩阵z的、由v指定的高度的等高线图。
相关文档
最新文档