《MATLAB/Simulink系统仿真超级学习手册》——2.6 MATLAB的图形绘制

本文涉及的产品
云原生数据库 PolarDB 分布式版,标准版 2核8GB
简介:

本节书摘来自异步社区《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将按系统默认格式统一安排各条曲线的属性值。
screenshot

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

screenshot

【例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所示的绘图结果。

screenshot

注意:

(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

screenshot

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

screenshot

【例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所示。
screenshot

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

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

【例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所示。

screenshot

screenshot
screenshot

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

注意:

(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。

screenshot

【例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所示。

screenshot

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所示。
screenshot

三维曲线修饰与二维图形的图形修饰函数类似,但比二维图形的修饰函数多了一个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所示。

screenshot

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

这里利用实例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所示。

screenshot

从脚本文件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所示的绘图结果。
screenshot

注意:

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

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

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

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

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

screenshot

当调用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命令窗口输入函数命令要简便的多,且更具可视性。

screenshot

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

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

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

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

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

screenshot

screenshot

screenshot

相关实践学习
快速体验PolarDB开源数据库
本实验环境已内置PostgreSQL数据库以及PolarDB开源数据库:PolarDB PostgreSQL版和PolarDB分布式版,支持一键拉起使用,方便各位开发者学习使用。
相关文章
|
1天前
|
存储
基于遗传算法的智能天线最佳阵列因子计算matlab仿真
本课题探讨基于遗传算法优化智能天线阵列因子,以提升无线通信系统性能,包括信号质量、干扰抑制及定位精度。通过MATLAB2022a实现的核心程序,展示了遗传算法在寻找最优阵列因子上的应用,显著改善了天线接收功率。
基于毕奥-萨伐尔定律的交流电机的4极旋转磁场matlab模拟与仿真
本课题基于毕奥-萨伐尔定律研究交流电机的4极旋转磁场,对比不同定子半径和2极旋转磁场。通过MATLAB2022a进行仿真,核心程序计算每个导线对空间点的磁场贡献,并绘制磁场分布。毕奥-萨伐尔定律描述了电流元产生的磁场分布,对于理解交流电机中旋转磁场的形成至关重要。
|
6天前
|
机器学习/深度学习 算法 数据挖掘
基于GWO灰狼优化的GroupCNN分组卷积网络时间序列预测算法matlab仿真
本项目展示了基于分组卷积神经网络(GroupCNN)和灰狼优化(GWO)的时间序列回归预测算法。算法运行效果良好,无水印展示。使用Matlab2022a开发,提供完整代码及详细中文注释。GroupCNN通过分组卷积减少计算成本,GWO则优化超参数,提高预测性能。项目包含操作步骤视频,方便用户快速上手。
|
8天前
|
固态存储
螺旋卫星通信天线设计与有限元分析matlab仿真
本课题研究了尺寸为10cm*10cm*30cm的卫星上搭载的螺旋型天线,工作于UHF频段(1-3GHz)。通过MATLAB2022a进行系统仿真,展示了天线的辐射特性。螺旋天线因其低轴比、宽带宽和紧凑结构而适用于卫星通信。采用有限元法分析天线的电磁性能,计算了天线的关键性能指标,包括S参数、增益、轴比等。
|
1天前
|
编解码 算法 数据安全/隐私保护
基于BP译码的LDPC误码率matlab仿真,分析码长,码率,信道对译码性能的影响,对比卷积码,turbo码以及BCH码
本程序系统基于BP译码的LDPC误码率MATLAB仿真,分析不同码长、码率、信道对译码性能的影响,并与卷积码、Turbo码及BCH编译码进行对比。升级版增加了更多码长、码率和信道的测试,展示了LDPC码的优越性能。LDPC码由Gallager在1963年提出,具有低复杂度、可并行译码等优点,近年来成为信道编码研究的热点。程序在MATLAB 2022a上运行,仿真结果无水印。
32 0
|
1天前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于贝叶斯优化卷积神经网络(Bayes-CNN)的多因子数据分类识别算法matlab仿真
本项目展示了贝叶斯优化在CNN中的应用,包括优化过程、训练与识别效果对比,以及标准CNN的识别结果。使用Matlab2022a开发,提供完整代码及视频教程。贝叶斯优化通过构建代理模型指导超参数优化,显著提升模型性能,适用于复杂数据分类任务。
|
6天前
|
算法 决策智能
基于GA-PSO遗传粒子群混合优化算法的TSP问题求解matlab仿真
本文介绍了基于GA-PSO遗传粒子群混合优化算法解决旅行商问题(TSP)的方法。TSP旨在寻找访问一系列城市并返回起点的最短路径,属于NP难问题。文中详细阐述了遗传算法(GA)和粒子群优化算法(PSO)的基本原理及其在TSP中的应用,展示了如何通过编码、选择、交叉、变异及速度和位置更新等操作优化路径。算法在MATLAB2022a上实现,实验结果表明该方法能有效提高求解效率和解的质量。
|
2月前
|
安全
【2023高教社杯】D题 圈养湖羊的空间利用率 问题分析、数学模型及MATLAB代码
本文介绍了2023年高教社杯数学建模竞赛D题的圈养湖羊空间利用率问题,包括问题分析、数学模型建立和MATLAB代码实现,旨在优化养殖场的生产计划和空间利用效率。
153 6
【2023高教社杯】D题 圈养湖羊的空间利用率 问题分析、数学模型及MATLAB代码
|
2月前
|
存储 算法 搜索推荐
【2022年华为杯数学建模】B题 方形件组批优化问题 方案及MATLAB代码实现
本文提供了2022年华为杯数学建模竞赛B题的详细方案和MATLAB代码实现,包括方形件组批优化问题和排样优化问题,以及相关数学模型的建立和求解方法。
111 3
【2022年华为杯数学建模】B题 方形件组批优化问题 方案及MATLAB代码实现
|
2月前
|
数据采集 存储 移动开发
【2023五一杯数学建模】 B题 快递需求分析问题 建模方案及MATLAB实现代码
本文介绍了2023年五一杯数学建模竞赛B题的解题方法,详细阐述了如何通过数学建模和MATLAB编程来分析快递需求、预测运输数量、优化运输成本,并估计固定和非固定需求,提供了完整的建模方案和代码实现。
79 0
【2023五一杯数学建模】 B题 快递需求分析问题 建模方案及MATLAB实现代码

热门文章

最新文章