13 MATLAB 三维图形绘制

13 MATLAB 三维图形绘制在实际工程应用中 常常遇到三维甚至更多维的数据 需要在图形中表示出来 MATLAB 中提供了相应的三维图形绘制功能 这些绘制功能与二维图形的绘制十分类似 特别是曲线的属性 例如线型 颜色等的设置 是完全相同的 最常用的三维绘图有三维曲线图 三维网格图和三维曲面图这 3 中基本类型 相应的 MATLAB 指令分别为 plot3 mesh 和 surf 1 曲线图绘制在已经学习了 plot 指令的基础上

在实际工程应用中,常常遇到三维甚至更多维的数据,需要在图形中表示出来,MATLAB中提供了相应的三维图形 绘制功能,这些绘制功能与二维图形的绘制十分类似,特别是曲线的属性,例如线型、颜色等的设置,是完全相同的。最常用的三维绘图有三维曲线图、三维网格图和三维曲面图这3中基本类型,相应的MATLAB指令分别为plot3,mesh和surf。

1、曲线图绘制

在已经学习了plot指令的基础上,在三维图形指令中,plot3指令十分容易理解,其调用格式也与plot指令类似。其具体语法如下

plot3(x,y,z):x,y,z为同维向量时,绘制以x,y,z为X,Y,Z坐标的三维曲线;x,y,z为同维矩阵时,用x,y,z的对应列元素绘制X,Y,Z坐标的三维曲线,曲线 的条数为                        矩  阵的列数。

plot3(x1,y1,z1,x2,y2,z2);绘制以x1,y1,z1,和x2,y2,z2位X,Y,Z坐标的三维曲线

plot3(x,y,z,‘PropertyName’,PropertyValue…..):在PropertyName所规定的曲线属性下,绘制三维曲线。

plot3(x1,y1,z1,‘ProtertyName1’,PropertyValue1…,x2,y2,z2,‘PropertyName2’,PropertyValue2….);

示例:

13 MATLAB 三维图形绘制

例2:

plot3(x1,y1,z1,’rd’,x2,y2,z2,’g^’,’LineWidth’,2);

13 MATLAB 三维图形绘制

2.网格图绘制

三维网格图和曲面图的绘制比三维曲线图的绘制稍显复杂,主要是因为数据的准备及三维图形的色彩、明暗、光照和视角等的问题。绘制函数z=f(x,y)的三维网格图的过程如下:

(1)确定自变量x和y的取值范围和取值间隔

  x=x1:dx:x2, y=y1:dy:y2;

(2)构成xoy平面上的自变量采样”格点”矩阵。

        法一:采用格点矩阵的原理生成矩阵

                 x=x1:dx:x2, y=y1:dy:y2;

               X=ones(size(y))*x;

              Y=y*ones(size(x));

    法二: 采用meshgrid指令生成“格点”矩阵

           x=x1:dx:x2, y=y1:dy:y2;

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

(3)计算在自变量采样“格点”上的函数值:Z=f(x,y);

绘制网格图的基本mesh指令的语句的句法格式如下:

mesh(X,Y,Z):以X为x轴自变量,Y为y轴自变量,绘制网格图;X,Y均为向量,若X,Y长度分别为m,n,则Z为mXn的矩阵,即[m,n]=size(Z),则网格线的顶点为  (Xj,Yi,Zi,j)。

mesh(Z):以Z矩阵列下标为x轴自变量,行下标为y轴自变量,绘制网格图。

mesh(X,Y,Z,C): 以X为x轴自变量,Y为y轴自变量,绘制网格图,其中C用于定义颜色, 如果不定义C,则成为mesh(X,Y,Z),其绘制的网格图的颜色随着Z值的变化(即曲面高度)而变化

mesh(X,Y,Z,‘PropertyName’,PropertyValue):ProteryValue用来定义网格图的标记等属性。

示例:

13 MATLAB 三维图形绘制

3.曲面图的绘制

曲面图的绘制由surf指令完成,该指令的调用格式与mesh指令类似,具体如下:

surf(X,Y,Z)

surf(Z)

surf(X,Y,Z,C)

surf(X,Y,Z,‘PropertyName’,ProtertyValue)

mesh指令过绘制的图形是网格划分的曲面图,而surf指令绘制得到的是平滑着色的三维曲面图,着色的方式是在得到相应的网格点后,对每一个网格依据该网格所代表的节点的色值(由变量C控制)来定义这一网格的颜色。

13 MATLAB 三维图形绘制

13 MATLAB 三维图形绘制

光照是一种利用方向光源照亮物体的技术,在某些情况下,这项技术能使表面微妙的差异更容易看到,光照也能用来对三维的图形增加现实感。

示例

 x=-10:0.1:10;

camlight left;

 view(-15,65)

13 MATLAB 三维图形绘制

MATLAB中内置了surfl函数,可以画出类似于函数surf产生的带彩色的曲面,原理是基于运用漫反射、镜面发射光和环境照明模型。使用一个单色颜色映像(如灰色,纯白,铜黄或粉红色)和插值色彩,会画出效果更好的曲面,语法格式如下:

%colormap设定和获取当前色图的函数,colormap(copper)设定当前色图,copper 从黑色平滑过渡到亮铜色。

%shading interp 会区分每个线形区域的颜色,并且插入与其相近的颜色。插值上色会极大地降低打印速度,

%[-90 30]指定光源与曲面的方位,如果没有定义,默认光源是逆时针45度

%[0.55 0.5 2 10]指定反射系数,分别为环境光系数,漫反射系数,镜面反射系数,镜面发射亮度(以像素为单位)。缺省时默认为[0.55 0.6 0.4 0]

shading interp

13 MATLAB 三维图形绘制

5.绘制等值线图

等值线图又叫做等高线图,绘制等值线图需要用到contour指令,调用格式如下

contour(Z):以Z矩阵列下标为x轴自变量,行下边为y轴自变量,绘制等值线图

contour(Z,n):其中的n为所绘制的图形等值线的条数。

contour(Z,v):其中的v为向量,向量的长度为等值线的条数,并且等值线的值为对应向量的元素值。

contour(X,Y,Z):其功能为以X为x轴自变量,Y为y轴自变量,绘制等值线图;X,Y均为向量,若X,Y长度分别为m,n,则Z为mXn的矩阵,即[m,n]=size(Z),则网格线的顶点为(Xj,Yi,Zij)。

contour(X,Y,Z,n):其中的n为所绘制的图形等值线的条数。

contour(X,Y,Z,v):其中的v为向量,向量的长度为等值线的条数,并且等值线的值为对应的向量的元素值。

contour(…..,’LineSpace’):LineSpace用来定义等值线的线型。

与contour作用类似的指令还有contourf指令,其调用格式与contour相同。

例:

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/213244.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 下午6:15
下一篇 2026年3月18日 下午6:15


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号