7.3  三维图形

除了绘制二维图形,MATLAB还提供了一系列强大的三维图形绘制函数,这些函数的分类列表如图7-29所示。

可以看出,MATLAB基本的三维图形包括线型(line)、网格型(mesh)、区域型(area)、面型(surface)、方向矢量型(direction)、容积型(volumetric)等多种类型,图中已经将各个函数所能够绘制图形的基本样式做了小的缩略图。本节介绍常用三维绘图函数的使用。至于其他的绘图函数,因篇幅有限,这里不再介绍,请读者查阅帮助文档。

图7-29  三维图形绘制函数分类列表

7.3.1  绘制三维曲线图

在MATLAB中,plot3函数用于绘制三维曲线图。该函数的用法和plot类似,其调用语法如下。

(1)plot3(X1,Y1,Z1,...): X1、Y1、Z1为向量或者矩阵。当X1、Y1、Z1为长度相同的向量时,此函数将绘制一条分别以向量X1、Y1、Z1为x、y、z坐标的空间曲线;当X1、Y1、Z1为矩阵时,该命令以每个矩阵的对应列为x、y、z坐标绘制出m条空间曲线。

(2)plot3(X1,Y1,Z1,LineSpec,...) :通过LineSpec设置曲线和点的属性。

(3)plot3(...,'PropertyName',PropertyValue,...):利用指定的属性绘制图形。

(4)h = plot3(...):返回一个图形对象句柄的列向量。

【例7-26】  绘制三维螺旋线。

Ex_7_26.m

t = 0:pi/50:10*pi;

plot3(sin(t),cos(t),t)

grid on

axis square

以上代码运行的结果如图7-30所示。

图7-30  三维螺旋线

7.3.2  绘制三维曲面图

在MATLAB中,除了plot3函数可用于绘制三维图形外,还有一些函数可以用来绘制三维网格图和曲面图。下面分别介绍这些函数。

1.三维网格图

mesh函数用于绘制三维网格图,其调用语法如下。

(1)mesh(X,Y,Z):绘制出一个网格图,图像的高度由Z来决定,另外图像的颜色也由Z确定,即图像的颜色与高度成正比。如果X和Y为向量,那么length(X)= n,且

(2)ength(Y) = m,其中[m,n]= size(Z),在绘制的图形中,网格线上的点由坐标(X(j), Y(i), Z(i,j))决定。向量X对应于矩阵Z的列,向量Y对应矩阵Z的行。

(3)mesh(Z):以Z的元素为z坐标,元素对应矩阵的行数和列数分别为x和y坐标。

(4)mesh(...,C):C为矩阵。绘制出的图像的颜色由C指定。MATLAB对C进行线性变换,得到颜色映射表。如果X、Y、Z为矩阵,矩阵的维数则应该与C相同。

(5)mesh(...,'PropertyName',PropertyValue,...):利用指定的属性绘制图形。

(6)mesh(axes_handles,...):利用指定的坐标轴绘制,axes_handles为坐标轴句柄。

(7)meshc(...):创建一个匹配有二维等高线图的网格图。

(8)meshz(...):绘制出网格周围的参考面。

(9)h = mesh(...):返回一个图形对象的句柄。

【例7-27】  绘制函数的网格图。

Ex_7_27.m

x=-4:.2:4;y=x;

[X,Y]=meshgrid(x,y);

Z=X.^2+Y.^2;

mesh(X,Y,Z)

以上代码运行的结果如图7-31所示。

【例7-28】  绘制peaks函数的三维网格图及其在底面投影的等高线图。

Ex_7_28.m

[X,Y] = meshgrid(-3:.125:3);

Z = peaks(X,Y);

meshc(X,Y,Z);

axis([-3 3 -3 3 -10 5])

以上代码运行的结果如图7-32所示。

图7-31  三维网格图图

7-32  peaks函数三维网格图及其在底面投影的等高线图

2.三维曲面图

函数surf用来绘制三维表面图形,其调用语法如下。

(1)surf(Z)和surf(Z,C):在这两个用法中,X默认为X=1:n,Y默认为Y=1:m,此时Z是一个单值函数。

(2)surf(X,Y,Z):如果X和Y为向量,那么length(X)= n,且length(Y) = m,其中[m,n]= size(Z),在绘制的图形中,网格线上的点由坐标(X(j), Y(i), Z(i,j))决定。向量X对应矩阵Z的列,向量Y对应矩阵Z的行。

(3)surf(X,Y,Z,C):通过4个矩阵参数绘制彩色的三维表面图形。其中,图形的视角由view函数值定义;图形的各轴范围由X、Y、Z通过当前的axis函数值定义;图形的颜色范围由C定义。

(4)surf(...‘PropertyName’,PropertyValue,...):设置图形表面的属性值,单个语句可以设定多个属性值。

(5)surf(axes_handles,...):利用指定的坐标轴绘制,axes_handles为坐标轴句柄。

(6)surfc(...):创建一个匹配有二维等高线图的曲面图。

(7)h = surf(...):返回一个图形对象的句柄。

【例7-29】  绘制peaks函数的曲面图。

Ex_7_29.m

[X,Y,Z] = peaks(30);

surfc(X,Y,Z)

colormap hsv

axis([-3 3 -3 3 -10 10])

以上代码运行的结果如图7-33所示。

图7-33  peaks函数曲面图

7.3.3  特殊三维图形

1.三维条形图

在MATLAB中,可以使用函数bar3和bar3h来绘制三维条形,它们的调用语法与前面讲的函数bar和barh相似,这里不再赘述。

【例7-30】  使用bar3和bar3h函数绘制条形图示例。

Ex_7_30.m

X=rand(5,5)*10;  %  产生5×5矩阵,其中每个元素为1~10之间的随机数

subplot(221),bar3(X,'detached'),title('detached');

subplot(222),bar3(X,'grouped'),title('grouped');

subplot(223),bar3h(X,'stacked'),title('stacked');

subplot(224),bar3h(X,'detached'),title('detached');

以上代码运行的结果如图7-34所示。

图7-34  三维条形图示例

2.三维球体图

MATLAB提供了sphere函数来生成三维球体图。

【例7-31】  sphere函数使用示例。

Ex_7_31.m

subplot(2,2,1)

sphere(8)            %  括号中的数字指生成球体的面数,这里是指8×8

axis equal

subplot(2,2,2)

sphere(16)

axis equal

subplot(2,2,3)

sphere(24)

axis equal

subplot(2,2,4)

sphere(32)

axis equal

以上代码运行的结果如图7-35所示。

3.三维饼形图

函数pie3用于绘制三维饼形图,其用法与二维饼形图函数pie基本相同。

【例7-32】  使用函数pie3绘制三维饼形图。

Ex_7_32.m

x=rand(1,5);               %  产生一个含有5个0~1之间的随机数构成的向量

explode=[0 1 0 0 0];      %  分离出向量x的第二个元素

pie3(x,explode)

以上代码运行的结果如图7-36所示。

图7-35  三维球体图示例图

7-36  三维饼形图示例

4.三维箭状图

函数quiver3用来绘制三维的箭状图或速度矢量图,其用法和quiver类似。

【例7-33】  绘制曲面的曲面法线。

Ex_7_33.m

[X,Y] = meshgrid(-2:0.25:2,-1:0.2:1);

Z = X.* exp(-X.^2 - Y.^2);

[U,V,W] = surfnorm(X,Y,Z);

quiver3(X,Y,Z,U,V,W,0.5);

hold on

surf(X,Y,Z);

colormap hsv

view(-35,45)

axis ([-2 2 -1 1 -.6 .6])

hold off

以上代码运行的结果如图7-37所示。

5.三维等高线图

contour3函数用于绘制一个矩阵的三维等高线图,其用法与contour函数基本相同。

【例7-34】  绘制函数的等高线图形,并使用cool颜色图。

Ex_7_34.m

[X,Y] = meshgrid([-2:.25:2]);   %  生成维数相同的两个矩阵X,Y

Z = X.*exp(-X.^2-Y.^2);

contour3(X,Y,Z,40)           %  绘制Z的等高线,40为等高线的数目

surface(X,Y,Z,'EdgeColor',[.8 .8 .8],'FaceColor','none')%  绘制表面图

grid off                     %  去掉网格线

view(-15,25)                %  设定视角

colormap cool               %  建立颜色图

以上代码运行的结果如图7-38所示。

图7-37  曲面法线图

图7-38  三维等高线图示例

matlab meshc函数_MATLAB三维图形相关推荐

  1. matlab meshc函数_MATLAB函数库大全(收藏版)

    转发朋友圈获30赞,截图发送至公众号对话框,即可获该文章的PDF版本方便阅读. 目录 1 常用命令 表1.1 管理用命令 表1.2管理变量与工作空间用命令 表1.3文件与操作系统处理命令 表1.4窗口 ...

  2. MATLAB 色图函数绘制多彩图形

    MATLAB 色图函数绘制多彩图形 笔者在做SIR模型的时候,需要绘制多条线于同一图像上对比不同参数的影响,因而用到了色图函数 直入主题 先上色图的参考文档 这是完整的SIR模型的绘图 在 曲线较少 ...

  3. matlab画转体_matlab三维作图教程

    原标题:matlab三维作图教程 三维曲线 plot3函数与plot函数用法十分相似,其调用格式为: plot3(x1,y1,z1,选项1,x2,y2,z2,选项2,-,xn,yn,zn,选项n) 其 ...

  4. matlab绘图z=sin(x_「matlab画三维图」Matlab 应用之绘制三维图形(基础篇) - seo实验室...

    matlab画三维图 在Matlab中,三维图形的绘制包括三维曲线,三维网线图和三维曲面图.闲话不多说,直接进入正题.首先介绍几个函数: 1.plot3(x,y,z,-) 其中,x,y,z为维数相同的 ...

  5. matlab三维选取二维,基于Matlab绘制二维和三维图形以及其他图形控制函数的使用方法...

    Matlab绘图 强大的绘图功能是Matlab的特点之一,Matlab提供了一系列的绘图函数,用户不需要过多的考虑绘图的细节,只需要给出一些基本参数就能得到所需图形,这类函数称为高层绘图函数.此外,M ...

  6. matlab meshgrid函数_matlab入门(三)图像可视化

    matlab图像可视化 基本要求 (1)掌握图形窗口的创建与控制,以及图形窗口的基本操作:(2)熟练掌握二维和三维绘图基本的命令.线型控制:(3)初步掌握用特殊的图形来表现特殊数据的性质,如面积图.直 ...

  7. Matlab绘图基础——其他三维图形(绘制填充的五角星)

    其他三维图形 %绘制魔方阵的三维条形图 subplot(2,2,1); bar3(magic(4));   %以三维杆图形式绘制曲线y=2sin(x) subplot(2,2,2); y=2*sin( ...

  8. matlab s函数_matlab结构体 rmfield,arrayfun,structfun,struct2cell,cell2struct

    觉得有用的话,请点击右下角 推荐给更多小伙伴 neoken_xuAsurada2015Evacloud 本文为matlab自学笔记的一部分,之所以学习matlab是因为其真的是人工智能无论是神经网络还 ...

  9. matlab norm函数_MATLAB | TAM 211 存活指南 V3.0

    点击蓝字 关注我 本文大部分内容为2019年初次接触 TAM 211时所写,后续存在少量修改与增补.叙述时间可能有点错乱,凑合着看吧. 新的学期,我们迎来了 TAM 211 , 静力学的课程.虽说这是 ...

最新文章

  1. Struts2和SpringMVC简单配置以及区别总结
  2. 公司用的 MySQL 团队开发规范
  3. 单片机软件proteus的汉化步骤
  4. 阿里“火拼”拼多多,要“1元”抢占下沉市场
  5. Myeclipse8.5配置本地tomcat
  6. c++ 调用python返回指针
  7. 第2课第3节_Java面向对象编程_继承性_P【学习笔记】
  8. 11g RAC OCR,VOTING DISK存储全部损坏,利用自动备份,恢复OCR,VOTING DISK到新存储。...
  9. 深度学习之 DCN(Deformable Convolution)-可变形卷积
  10. 了解 | 你必须了解的Mysql 三大日志
  11. eclipse java 报错信息_解决Eclipse启动时报Initializing Java Tooling异常信息
  12. GCN实践——可视化cora-network
  13. linux内核学习资料总结
  14. Google ptorobuf相关知识
  15. linux7磁盘挂载大于16T,CentOS6.5挂载超过16T的大容量存储空间,格式化为xfs
  16. 个人最喜欢的几款火狐扩展
  17. BBQ EasyBuns
  18. 肾有多好,人就有多年轻。男女通用
  19. linux系统常用命令列举
  20. LIO-livox - 激光IMU初始化模块分析

热门文章

  1. UE/UX 设计师可临摹的应用模板!
  2. 手把手教你入侵网站修改数据_手把手教你使用Python抓取QQ音乐数据(第四弹)...
  3. 音乐播放器的设计与实现
  4. 常用函数的连续傅里叶变换对
  5. 使用BPF进行性能追踪-BPF前世今生
  6. (5)Linux进程调度-CFS调度器
  7. php采集单线程卡死,php - 为什么我这段curl采集,单线程比多线程还快?
  8. 在sqlyog进行数据库的备份_狂神说MySQL07:权限及如何设计数据库
  9. netty的handler里面ctx.channel().writeAndFlush()和ctx.writeAndFlush()的区别
  10. php可逆加密函数,简洁的PHP可逆加密函数