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

2.6 MATLAB的图形绘制

MATLAB/Simulink系统仿真超级学习手册

MATLAB除了强大的数值分析功能外,还具有方便的绘图功能。利用MATLAB丰富的二维、三维图形函数和多种修饰方法,只要指定绘图方式并提供绘图数据,就可以绘制出理想的图形。由于MATLAB的图形系统是建立在诸如线、面等图形对象的集合基础之上,因此用户可以对任何一个图形元素进行单独的修改,而不影响图形的其他部分。

2.6.1 二维图形的绘制

1.基本绘图命名

MATLAB中最常用的绘图函数为plot(),它是用于绘制二维曲线的,根据函数输入参数不同,常用的几种调用格式如表2-12所示。其中,’option’用来设置曲线属性的选项,其内容主要包括诸如颜色、线型、标记类型等曲线属性。’option’选项并不是必需项,若缺少该项,MATLAB将按系统默认格式统一安排各条曲线的属性值。

MATLAB提供了三种’option’选项以供修改:Line style线类型,Marker symbol标记符号,Color颜色。表2-13列出了’option’选项的属性。

【例2-20】用三种不同的线型、标记符号和颜色分别绘制三条不同相位的正弦曲线。

(1)新建脚本文件ep2_20.m,输入下面的绘图命令,并保存;

figure

t = 0:pi/20:2*pi;

y1 = sin(t);

y2 = sin(t-pi/2);

y3 = sin(t-pi);

plot(t,y1,t,y2,t,y3)

(2)在MATLAB命令窗口中调用文件ep2_20,出现如图2-18所示的绘图结果。

注意:

(1)用来绘制图形的数据必须已经存储在工作空间中,也就是说在执行plot()命令之前,当前工作空间里必须有可用来绘制图形的数据;

(2)对应的x轴和y轴的数据长度必须相同;

(3)如果省略选项’option’,系统将按默认的格式绘制曲线;

(4)’option’中的属性可以多个连用,如选项’--b’表示绘制蓝色的虚线;

(5)执行Figure命令时,绘图结果将出现在一个新的窗口中。如图2-18所示,Figure 1显示的是例2-20绘制的结果,如一般的窗口,它有自己的菜单栏和工具栏;

(6)如果读者对已绘制的图形不满意,提出更具体的要求,如坐标轴范围,绘制网格等,在MATLAB命令窗口中输入下面的命令,Figure 1中的图形会有如图2-19所示的变化。

>> axis([0 10 -2 2])

>> grid on

2.图形修饰

有时读者会对图形的绘制进行一些修饰,MATLAB提供了多种图形函数,用于图形的修饰。常用的图形修饰函数名称及其功能说明如表2-14所示。

【例2-21】对例2-20的图形进行修饰,实现以下要求:

(1)将图形的x轴大小范围限定在[0, 2π]之间,y轴的大小范围限定在[-1,1]之间;

(2)x、y轴分别标注为“弧度值”、“函数值”;

(3)图形标题标注为“三个不同相位的正弦曲线”;

(4)添加图例标注,标注字符分别为y1,y2,y3;

(5)给三条曲线分别添加属性'-.r*','--mo',':bs';

(6)在三条曲线上分别标注文本y1=sin(t),y2=sin (t - {raise0.5exhbox{$\scriptstyle \pi $}kern-0.1em/kern-0.15emlower0.25exhbox{$\scriptstyle 2$}}),y3= sin (t - pi );

(7)给图形添加网格。

在文本文件ep2_20.m的基础上,添加如下命令,并另存为ep2_21.m。

% 图形绘制

figure

t = 0:pi/20:2*pi;

y1=sin(t);

y2=sin(t-pi/2);

y3=sin(t-pi);

plot(t,y1,'-.r*',t,y2,'--mo',t,y3,':bs')

% 图形修饰

axis([0,2*pi,-1,1])

xlabel('弧度值')

ylabel('函数值')

title('三个不同相位的正弦曲线')

legend('y1','y2','y3')

grid

gtext('y1=sin(t)')

gtext('y2=sin(t-pi/2)')

gtext('y3=sin(t-pi)')

在MATLAB命令窗口运行ep2_21.m,运行结果如图2-20所示。

标注文本。如图2-20所示,脚本文件ep2_20.m在执行第一个gtext命令时,需要在图形窗口Figure 1中确定该文本的位置。

Figure 1上可以看到一个跟随鼠标移动的十字形指针,将鼠标拖动到对应曲线附近,然后单击鼠标,字符串y1=sin(t)即可添加到此处。

同理,在执行第二个、第三个gtext命令时,仍需要进行类似的操作,依次将字符串y2=sin (t - {raise0.5exhbox{$\scriptstyle \pi $}kern-0.1em/kern-0.15emlower0.25exhbox{$\scriptstyle 2$}})和y3= sin (t - pi )添加到图形中,如图2-21所示。

3.特殊二维曲线绘制

除了标准的二维曲线绘制之外,MATLAB还提供了多种具有特殊意义的图形绘制函数,其常用调用格式如表2-15所示。其中,参数x和y分别表示x轴、y轴绘图数据。

这些特殊图形绘制函数适用于不同的场合,具有不同的意义。

【例2-22】已知,分别用表2-15中的六种绘图方式显示x和y的关系。

编写脚本文件,输入下面的语句,保存为ep2_22.m。

x=-4:0.5:4;

y=exp(x);

figure(1)

bar(x,y)

title('bar(x,y)')

figure(2)

stem(x,y)

title('stem(x,y)')

figure(3)

stairs(x,y)

title('stairs(x,y)')

figure(4)

polar(x,y)

title('polar(x,y)')

figure(5)

loglog(x,y)

title('loglog(x,y)')

figure(6)

area(x,y)

title('area(x,y)')

在MATLAB命令窗口中运行脚本文件ep2_22.m,程序运行结果如图2-22所示。

4.图形窗口控制

MATLAB提供了一系列专门的图形窗口控制函数,通过这些函数,可以创建或者关闭图形窗口,可以同时打开几个窗口,也可以在一个窗口内绘制若干子图。这些函数及其功能说明如表2-16所示。

注意:

(1)第一个绘图命令(如plot)运行后,将自动创建一个名为Figure 1的图形窗口。这个窗口将被当作当前窗口,接下来的所有绘图命令(包括绘图修饰和再一次的plot等命令)均在该图形窗口中执行,后续绘图指令会覆盖原图形或者叠加在原图形上。

(2)使用subplot命令时,各个绘图区域以“从左到右、先上后下”的原则来编号。MATLAB允许每个绘图区域以不同的坐标系单独绘制图形。

【例2-23】取三个不同的t,t1=0:π/20:π,t2=π/2:π/20:3π/2,t3=π:π/20:2π,在同一坐标系下绘制y1=sin(t1), y2=sin (t - {raise0.5exhbox{$\scriptstyle \pi $}kern-0.1em/kern-0.15emlower0.25exhbox{$\scriptstyle 2$}}) ,y3=sin(t3-π),其他修饰效果要求与例2-22相同。

编写脚本文件,输入下面的语句,保存为ep2_23.m。

% 图形绘制

figure

t1 = 0:pi/20:pi;

t2 = pi/2:pi/20:3*pi/2;

t3 = pi:pi/20:2*pi;

y1=sin(t1);

y2=sin(t2-pi/2);

y3=sin(t3-pi);

hold on

plot(t1,y1,'-.r*')

plot(t2,y2,'--mo')

plot(t3,y3,':bs')

hold off

% 图形修饰

axis([0,2*pi,-1,1])

xlabel('弧度值')

ylabel('函数值')

title('三个不同相位的正弦曲线')

legend('y1','y2','y3')

grid

gtext('y1=sin(t)')

gtext('y2=sin(t-pi/2)')

gtext('y3=sin(t-pi)')

在MATLAB命令窗口中运行脚本文件ep2_23.m,程序运行结果如图2-23所示。

注意:脚本文件ep2_23中,绘制三条曲线的命令与脚本文件ep2_21的不同之处在于使用了配对的hold on和hold off,然后分别使用了三次plot函数。这与直接使用plot绘制三条曲线效果一致,只需这样写即可plot(t1,y1,t2,y2,t3,y3,’option’)。如果去掉hold on会得到如图2-24的结果,只显示最后一个plot绘制的结果,也就是y3。

【例2-24】将例2-22中的六幅图在同一窗口中显示。

编写脚本文件,输入下面的语句,保存为ep2_24.m。

x=-4:0.5:4;

y=exp(x);

subplot(3,2,1);

bar(x,y)

title('bar(x,y)')

subplot(3,2,2);

stem(x,y)

title('stem(x,y)')

subplot(3,2,3);

stairs(x,y)

title('stairs(x,y)')

subplot(3,2,4);

polar(x,y)

title('polar(x,y)')

subplot(3,2,5);

loglog(x,y)

title('loglog(x,y)')

subplot(3,2,6);

area(x,y)

title('area(x,y)')

在MATLAB命令窗口中运行脚本文件ep2_24.m,程序运行结果如图2-25所示。

2.6.2 三维图形的绘制

除了常用的二维图形外,MATLAB还提供了三维数据的绘制函数,可以在三维空间绘制曲线或曲面。

1.三维曲线的绘制

三维曲线的绘制与二维曲线的绘制方法基本一致。常用的调用格式如下:

plot3(x,y,z,’option’)

plot3(x1,y1,z1,’option,x2,y2,z2,’option,…)

其中,x、y、z所给出的数据分别为x、y、z坐标值,’option’为选项参数,plot3命令中参数的含义与plot命令类似,只是多了一个z方向的参数。

【例2-25】绘制三维螺旋线。

编写脚本文件,输入下面的语句,保存为ep2_25.m。

z=0:pi/20:10*pi;

x=sin(z);

y=cos(z);

plot3(x,y,z)

xlabel('sin(z)')

ylabel('cos(z)')

zlabel('z')

grid on

在MATLAB命令窗口中运行脚本文件ep2_25.m,程序运行结果如图2-26所示。

三维曲线修饰与二维图形的图形修饰函数类似,但比二维图形的修饰函数多了一个z轴方向,如axis([Xmin,Xmax,Ymin,Ymax,Zmin,Zmax])。

特殊三维图形绘制与二维图形绘制类似,一般其函数名称为二维图形绘制名称后面加一个3,表示三维图形绘制,如bar3,stem3。

【例2-26】绘制三维火柴杆型螺旋线。

编写脚本文件,输入下面的语句,保存为ep2_26.m。

z=0:pi/20:2*pi;

x=sin(z);

y=cos(z);

stem3(x,y,z)

xlabel('sin(z)')

ylabel('cos(z)')

zlabel('z')

grid on

在MATLAB命令窗口中运行脚本文件ep2_26.m,程序运行结果如图2-27所示。

2.三维曲面的绘制

三维曲面方程存在两个自变量x、y和一个因变量z。因此,绘制三维曲面图形必须先在xy平面上建立网络坐标,每一个网络坐标点,和它对应的z坐标所确定的一组三维数据就定义了曲面上的一个点。三维曲面绘制中,常用的3个函数及其功能说明如表2-17所示。

这里利用实例2-27具体说明三维绘图的机制。

【例2-27】用mesh和surf两个函数分别绘制z=-x2-y2,x的范围限定在[-2,2],y的范围限定在[-2,2]。

编写脚本文件,输入下面的语句,保存为ep2_27.m。

x=-2:0.1:2;

y=-2:0.1:2;

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

Z=-(X.^2+Y.^2);

figure(1)

mesh(X,Y,Z)

figure(2)

surf(X,Y,Z)

在MATLAB命令窗口中运行脚本文件ep2_27.m,程序运行结果如图2-28所示。

从脚本文件ep2_27.m的代码中,可以看到绘制三维图形的步骤大致如下。

(1)在使用绘图函数mesh(或surf)之前,需要先对数据对(x,y)进行meshgrid处理,从而得到两个矩阵X和Y。这里meshgrid的作用是,根据数据对(x,y)生成xy网格点坐标数据,例如x=[1,2],y=[3,4],生成矩阵X=[1,2;1,2],Y=[3,4;3,4]。

(2)接着,把X和Y对应位置的值代入z关于x、y的表达式中,生成矩阵Z。

(3)使用三维绘图函数。mesh函数,就是把每个点[x(i,j),y(i,j),z(i,j)]用直线相连接,生成三维网格曲面。surf函数,与mesh函数类似,它是通过小平面连接相邻的点构成三维曲面。

注意:

x、y数据之间的步长间隔,决定了绘制出来的三维曲面的网格大小,即精细程度。

2.6.3 PLOT工具栏

节中提到过PLOT工具栏,该工具栏方便读者对工作空间里的变量进行绘图,可以省去部分代码的编写,但前提是要进行绘图的数据已存在于工作空间中。

在MATLAB命令窗口中输入如图2-29所示的命令,工作空间中出现了变量t和y,选中工作空间中的t和y,再单击PLOT工具栏中的图片 30plot绘图按钮,出现了如图2-30所示的绘图结果。

注意:

(1)单击plot绘图按钮,相当于在MATLAB命令窗口输入plot命令,读者可以发现单击plot绘图按钮之后,MATLAB命令窗口自动输入了plot命令。

(2)数据选中顺序会导致绘图结果不同。先选中t再选中y,相当于在MATLAB命令窗口输入plot(t,y);而先选中y再选中t,相当于在MATLAB命令窗口输入plot(y,t)。

(3)未选中任何数据时,PLOT工具栏中所有按钮都如图2-5所示呈灰色,也就是说必须选中数据才能使用绘图按钮。

2.6.4 图形对象属性设置

1.图形对象及其属性

节和2.6.2节中提及到,任何一个图形元素,读者都可以对其进行单独修改,而不影响图形的其他部分。这种独立的图形元素称为图形对象,图形对象的修改通过调整其属性来完成。

表2-18列出了MATLAB中常用的图形对象及其主要属性。

当调用plot命令绘制二维曲线时,MATLAB的执行过程大致如下:

(1)使用figure命令,在root根对象上生成一个figure图形窗口对象;

(2)使用axis命令,在图形窗口内生成一个绘图区域(axis对象);

(3)最后用line命令在axis指定的区域内绘制线条(line对象)。

因此,MATLAB所绘制的图形是由基本的图形对象组合而成的,可以通过改变图形对象的属性来设置所绘制的图形,以满足不同的绘图需求。

2.图形可视编辑工具

MATLAB执行绘图函数后,将出现一个图形窗口。该窗口除了简单的显示图形功能外,其本身就是一个功能强大的图形可视编辑工具,可实现的功能主要如下:

(1)通用的图形文件管理功能,如保存、打开、新建图形文件等;

(2)通用的图形效果编辑功能,如图形放大、缩小、旋转、对齐等;

(3)图形对象插入功能,如插入坐标轴名称、图形标题、图例标注、线段、文字等;

(4)独立这是窗口中各图形对象属性功能,如线段的类型、颜色、粗细等。

图形对象插入功能可通过选择菜单命令Insert后,再选择相应的对象选项来完成,如图2-31所示。该功能与节讲的图形修饰函数一致。如,菜单命令Insert→Title与函数title(‘string’)功能一致,菜单命令Insert→legend与函数legend(‘string1’,’string,…)功能一致。

显然,使用菜单命令比在MATLAB命令窗口输入函数命令要简便的多,且更具可视性。

图形对象属性的设置可以通过以下两种方法实现:

(1)选择菜单命令View→Property Editor,如图2-32所示,在图形下方出现了一个Property Editor属性编辑窗口;

(2)选择菜单命令Tools→Edit Plot(或者单击工具栏中的图片 25Edit Plot按钮),如图2-33所示,鼠标移动到需要修改的对象上双击左键,或者选中后再单击右键,在弹出的菜单中选择Show Properties Editor以显示属性编辑窗口。

这两种方法都可以使图片 23 Edit Plot按钮高亮化,同时图形窗口下方会出现属性编辑窗口。在此属性窗口下,可以进行坐标、线段、标题等项目的颜色、字体、网格、范围的设置。

选中一个对象后,再单击右下角的More Properties更多属性按钮,将出现该对象更加详细的属性编辑窗口,如图2-34所示。

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

  1. matlab中存档算法代码,MATLAB 智能算法超级学习手册中程序代码

    [实例简介] MATLAB 智能算法超级学习手册中程序代码 [实例截图] [核心代码] dc90ef43-7920-434e-bdb8-0636c31c0b44 └── MATLAB 智能算法超级学习 ...

  2. 《MATLAB R2012a超级学习手册》一2.5 本章小结

    本节书摘来自异步社区<MATLAB R2012a超级学习手册>一书中的第2章,第2.5节,作者 史洁玉 , 孔玲军,更多章节内容可以访问云栖社区"异步社区"公众号查看 ...

  3. matlab中udt函数,《MATLAB信号处理超级学习手册》——2.5 离散时间信号中的运算...

    本节书摘来自异步社区<MATLAB信号处理超级学习手册>一书中的第2章,第2.5节,作者:MATLAB技术联盟 , 史洁玉著,更多章节内容可以访问云栖社区"异步社区"公 ...

  4. 《MATLAB图像处理超级学习手册》导读

    前言 MATLAB图像处理超级学习手册 图像是人类获取信息的重要来源.当今的信息化社会,对图像处理和图像分析的要求越来越高,现有的图像软件由于采购成本和功能的限制,已经不能完全满足专业人士的需要,这时 ...

  5. matlab图像处理创建项目,《MATLAB图像处理超级学习手册》一一2.1 矩阵的创建

    本节书摘来自异步社区出版社<MATLAB图像处理超级学习手册>一书中的第2章,第2.1节,作者:MATLAB技术联盟 , 张岩 更多章节内容可以访问云栖社区"异步社区" ...

  6. 《MATLAB信号处理超级学习手册》——2.7 本章小结

    本节书摘来自异步社区<MATLAB信号处理超级学习手册>一书中的第2章,第2.7节,作者:MATLAB技术联盟 , 史洁玉著,更多章节内容可以访问云栖社区"异步社区"公 ...

  7. 《MATLAB R2012a超级学习手册》一第1章 MATLAB概述

    本节书摘来自异步社区<MATLAB R2012a超级学习手册>一书中的第1章,作者 史洁玉 , 孔玲军,更多章节内容可以访问云栖社区"异步社区"公众号查看 第1章 MA ...

  8. 《MATLAB智能算法超级学习手册》一一1.3 符号变量的应用

    本节书摘来自异步社区出版社<MATLAB智能算法超级学习手册>一书中的第1章,第1.3节,作者:MATLAB技术联盟 , 高飞 , 许玢更多章节内容可以访问云栖社区"异步社区&q ...

  9. matlab智能算法超级学习手册 pdf,MATLAB智能算法超级学习手册

    [实例简介] 高飞作者书,MATLAB智能算法超级学习手册源码.通过此书的学习,加上对代码的阅读调试,能够更好的对算法理解. [实例截图] [核心代码] MATLAB智能算法超级学习手册-程序代码 └ ...

最新文章

  1. 怎样知道一个数是不是2的N次方,怎样判断一个数是奇数还是偶数
  2. WebView 加载javaScript
  3. 阿里大数据分析与应用(part7)--机器学习平台PAI
  4. python读取oracle数据到hvie parquet_关于sparksql操作hive,读取本地csv文件并以parquet的形式装入hive中...
  5. Vs Code:Remote SSH
  6. 主从复制中忽略库的参数
  7. A10 平板开发一硬件平台搭建
  8. 芜湖计算机专业哪个学校最好,芜湖IT行业那么火,到底哪些人适合学IT呢?
  9. delete 和 delete []
  10. View的加载原理和拦截方式
  11. python_numpy_中的matrix与array的区别
  12. python request 接口自动化设计
  13. java100内奇数和偶数的和
  14. 一只小蜜蜂(C ++ 详解 )
  15. clickhouse初学以及利用ck实现BI系统的增量更新
  16. 关于电影视频服务器架设的方法
  17. Shrinkage: I was in the pool
  18. eclipse中的buidpath配置(工程不build)
  19. BZOJ 2140 稳定婚姻题解
  20. 2021年茶艺师(初级)考试及茶艺师(初级)模拟试题

热门文章

  1. Android电视清理系统应用,智能电视删除自带软件,这个方法最简单!
  2. git在远程仓库传项目出现的问题
  3. Linux下poky编译2
  4. arm poky linux,交叉编译iMX6 contex-A9 arm-poky 一些坑
  5. spring boot + shiro 实现登陆 踢出用户功能 (挤人) 以及UnknownSessionException异常问题 记住我功能
  6. 基于antd DatePicker的年份组件
  7. MyBatis中小于号“<“的使用
  8. 树上取石子's 题解
  9. antd 实现 sidebar 左侧菜单·记
  10. 命令行net time同步时间(内网)