在实际工程应用中,常常遇到三维甚至更多维的数据,需要在图形中表示出来,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....);

示例:

theta=0:0.01*pi:2*pi;
x=sin(theta);
y=cos(theta);
z=cos(4*theta);
figure
plot3(x,y,z,'LineWidth',2);
hold on;
theta=0:0.02*pi:2*pi;
>> x=sin(theta);
y=cos(theta);
z=cos(4*theta);
plot3(x,y,z,'rd','MarkerSize',10,'LineWidth',2)

例2:

theta=0:0.01*pi:2*pi;
x1=sin(theta);
y1=cos(theta);
z1=cos(4*theta);
 x2=sin(2*theta);
 y2=cos(3*theta);
 z2=cos(5*theta);
 figure

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

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用来定义网格图的标记等属性。

示例:

x=-10:0.1:10;
>> y=-10:0.1:10;
>> [X,Y]=meshgrid(x,y);
>> Z=-X.^2-Y.^2+200;
>> mesh(X,Y,Z);

3.曲面图的绘制

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

surf(X,Y,Z)

surf(Z)

surf(X,Y,Z,C)

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

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

[x,y,z]=peaks(25); %峰函数,peaks(25)是产生25×25的guassian分布矩阵
>> figure
>> surf(x,y,z);
>> title('surf曲面绘制')
>> figure
>> mesh(x,y,z);
>> title('mesh网格绘制')

4.光照模型

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

示例

x=-10:0.1:10;

y=-10:0.1:10;
 [X,Y]=meshgrid(x,y);
Z=-X.^2-Y.^2+200;

figure
surf(X,Y,Z,'FaceColor','red','EdgeColor','none');     %'FaceColor','red'曲面涂上红色,边缘无色

%一个发光的物体被加到了“镜头”的左边(即从空间观看时所在的表面的位置)

camlight left;

%设置照明方式为phong模型,

lighting phong

%view命令改变视角

view(-15,65)

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

surfl(X,Y,Z,S):其中S以[Sx,Sy,Sz]或[az,el]的形式定义光源方向,在没有定义的情况下,其默认光源是逆时针45度。

例:

[X,Y,Z]=peaks(30);      %峰函数,peaks(30)是产生30×30的guassian分布矩阵
subplot(1,2,1);

surfl(X,Y,Z)

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

colormap(copper);
title('Default Lighting');
shading interp

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

%这是因为每一个像素都有一个不同的颜色值,打印机对每个点要分别上色

subplot(1,2,2);surfl(X,Y,Z,[-90 30],[.55 .6 2 10]);

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

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

shading interp

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相同。

例:

[X,Y,Z]=peaks(30);
>> figure
>> subplot(2,2,1);contour(X,Y,Z);
>> subplot(2,2,2);contour(X,Y,Z,10);  %画出10条等值线
>> subplot(2,2,3);contour(X,Y,Z,-10:1:10); % 画出20条等值线,并且等值线的值为-10,-9,........,9,10
>> subplot(2,2,4);contour(X,Y,Z,':');  %  指定线型为点线

13 MATLAB 三维图形绘制相关推荐

  1. MATLAB三维图形绘制、渲染和交互

    [课程介绍] 介绍MATLAB三维图形的建模.着色.光照.材质.透明性和交互操作全部内容. [课程收益] MATLAB三维绘图 MATLAB三维图形渲染和交互操作 视频教程入口 第一章:课程简介 1. ...

  2. matlab 三维立体图,(精)MATLAB三维图形绘制.ppt

    4.2 MATLAB的 三维图形绘制 二.绘制三维网格图和曲面图 2. 三维网格图 3. 三维曲面图 三.绘制三维旋转体 四.立体图形与图轴的控制 五.色彩的控制 2.色图的显示和处理 (2) 浓淡处 ...

  3. MATLAB实战系列(二十二)-matlab三维图形绘制案例最全集锦(毕设和数学建模必看)

    前言 在Matlab中,三维图形的绘制包括三维曲线,三维网线图和三维曲面图等等.接下来我们详细讲解下. 三维曲线 plot3函数与plot函数用法十分相似,其调用格式为: plot3(x1,y1,z1 ...

  4. 【MATLAB】三维图形绘制 ( 绘制网格 + 等高线 | meshc 函数 | 绘制平面 + 等高线 | surfc 函数 )

    文章目录 一.绘制网格 + 等高线 1.meshc 函数 2.代码示例 二.绘制平面 + 等高线 1.surfc 函数 2.代码示例 一.绘制网格 + 等高线 1.meshc 函数 meshc 函数参 ...

  5. matlab实验4图形的绘制,MATLAB编程与应用实验报告(三维图形绘制)

    <MATLAB编程与应用实验报告(三维图形绘制)>由会员分享,可在线阅读,更多相关<MATLAB编程与应用实验报告(三维图形绘制)(5页珍藏版)>请在人人文库网上搜索. 1.M ...

  6. matlab/simulink石良臣,《MATLAB/Simulink系统仿真超级学习手册》——2.6 MATLAB的图形绘制...

    本节书摘来自异步社区<MATLAB/Simulink系统仿真超级学习手册>一书中的第2章,第2.6节,作者:MATLAB技术联盟 , 石良臣著,更多章节内容可以访问云栖社区"异步 ...

  7. matlab二维三维图形绘制和坐标轴范围设置

    matlab二维绘图 一. 二维图形(Two dimensional plotting) 1. 基本绘图函数(Basic plotting function):Plot, semilogx,   se ...

  8. matlab中三维图形绘制函数

    1.plot3 plot3是最基本的三维图形函数,它将二维plot函数的功能拓展到三维空间,其基本的调用格式为plot3(x1,y1,z1,'图形设置选项1',x2,y2,z2,'图形设置选项2'-- ...

  9. matlab三维图形的绘制

    采用matlab进行三维图绘制 1.mesh函数:网格图 mesh(x,y,z) x是n维向量,y是m维向量,z是m*n维向量 x=1:0.1:10; y=1:0.1:10; [x, y] = mes ...

最新文章

  1. ELMo:最好用的词向量(Deep contextualized word representations)论文 pdf
  2. Oracle 9i DBA Fundamentals I 学习笔记(三)
  3. 5.4 异步TCP编程(一)
  4. 抓取html 中文乱码,利用代码抓取网页数据,出现中文乱码问题
  5. HashSet集合存储数据的结构(哈希表)及set集合存储元素不重复的原理
  6. SCRIPT70: 没有权限
  7. 基于jsp+mysql的JSP在线水果销售商城系统设计实现
  8. 计算机表格怎么加减乘除,如何在Word表格中进行加减乘除
  9. 科大讯飞回应“同传造假”:承认转写人类同传,沟通不足造成误解
  10. java只对_只对你情有独钟:写给Java的情诗
  11. Spring的注入方式中,官方推荐哪种方式
  12. 专接本C语言必背程序
  13. matlab 固态 机械_固态硬盘无法识别或数据删除还能恢复数据吗?
  14. 交易类APP原型设计分享 - 5miles
  15. 运行java -version出错 Error: could not open `\lib\amd64\jvm.cfg‘
  16. 【R语言】结巴分词与词性提取(以“提取知乎问题标题的频繁词前100个形容词”实战为例)(3月25日学习笔记)
  17. Unity Shader入门
  18. C语言:memcpy的用法
  19. Dragon slayer
  20. 阴阳师服务器紧急维护,2月24日阴阳师服务器更新维护内容公告

热门文章

  1. 互联网日报 | 全国版消费券今日起开抢;微信搜一搜正式开放服务搜索接入;高德打车上线“考生专车”服务...
  2. 单应性矩阵的理解及求解4
  3. php 给视频添加水印,记php调用ffmpeg给视频加文字水印
  4. 鸿蒙系统教程,麒麟9000+鸿蒙操作系统,华为新平板有点牛
  5. 祝福老朋友今天的收获
  6. uinavgationcontroller
  7. 对于损失函数MASE的计算公式
  8. 设置微信分享的标题 缩略图 连接 描述
  9. Android AMS(android 11)
  10. mysql笔试题18道