《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

相关文章
|
7天前
|
算法 数据可视化 图形学
网络通信系统的voronoi图显示与能耗分析matlab仿真
在MATLAB2022a中,该程序模拟了两层基站网络,使用泊松分布随机生成Macro和Micro基站,并构建Voronoi图。它计算每个用户的信号强度,选择最强连接,并分析SINR和数据速率。程序还涉及能耗计算,包括传输、接收、处理和空闲能耗的分析。Voronoi图帮助可视化网络连接和优化能源效率。
|
2月前
|
机器学习/深度学习 数据安全/隐私保护 计算机视觉
matlab学习(二)
matlab学习(二)
|
9天前
|
机器学习/深度学习 算法 调度
Matlab|基于改进鲸鱼优化算法的微网系统能量优化管理matlab-源码
基于改进鲸鱼优化算法的微网系统能量管理源码实现,结合LSTM预测可再生能源和负荷,优化微网运行成本与固定成本。方法应用于冷热电联供微网,结果显示经济成本平均降低4.03%,提高经济效益。代码包括数据分段、LSTM网络定义及训练,最终展示了一系列运行结果图表。
|
13天前
|
调度
基于蒙特卡洛的电力系统可靠性分析matlab仿真,对比EDNS和LOLP
电力系统可靠性评估研究,聚焦于LOLP(电力不足概率)和EDNS(期望缺供电量)的模拟分析。使用MATLAB2022a进行基于蒙特卡洛的仿真,模拟单线及多线故障,分析连锁效应。程序中通过随机断开线路,计算潮流,判断越限并用PSO优化。结果显示,LOLP和EDNS增加时,故障概率降低,但小概率大影响事件概率上升。以IEEE24-RTS系统为案例,考虑元件失效的马尔科夫过程,不考虑3个及以上元件失效情况,因为可能导致系统大规模崩溃。仿真步骤包括随机线路断开、故障分析和稳定性评估,涉及信息节点概率计算、潮流计算及优化决策。
|
13天前
|
算法 索引
基于Prony算法的系统参数辨识matlab仿真
Prony算法在MATLAB2022a中用于信号分析,识别复指数信号成分。核心程序通过模拟信号X1,添加不同SNR的噪声,应用Prony方法处理并计算误差。算法基于离散序列的复指数叠加模型,通过构建矩阵并解线性方程组估计参数,实现LTI系统动态特性的辨识。
|
21天前
|
机器学习/深度学习 算法 固态存储
m基于深度学习的卫星遥感图像轮船检测系统matlab仿真,带GUI操作界面
在MATLAB 2022a中,使用GoogLeNet对卫星遥感图像进行轮船检测,展示了高效的目标识别。GoogLeNet的Inception架构结合全局平均池化增强模型泛化性。核心代码将图像切块并分类,预测为轮船的部分被突出显示,体现了深度学习在复杂场景检测中的应用。
99 8
|
20天前
|
算法
基于极大似然法和最小二乘法系统参数辨识matlab仿真,包含GUI界面
该程序对比了基于极大似然法和最小二乘法的系统参数辨识,输出辨识收敛曲线和误差。在MATLAB2022a中运行,显示了测试结果。核心代码涉及矩阵运算和循环,用于更新和计算系统参数。算法原理部分解释了辨识的目的是建立数学模型,并介绍了极大似然法(基于概率统计)和最小二乘法(基于误差平方和最小化)两种方法。
|
17天前
|
机器学习/深度学习 数据采集 算法
m基于Googlenet深度学习的运动项目识别系统matlab仿真,包括GUI界面
**摘要:** 在MATLAB 2022a中,基于GoogLeNet的运动识别系统展示优秀性能。GoogLeNet,又称Inception网络,通过结合不同尺寸卷积核的Inception模块实现深度和宽度扩展,有效识别复杂视觉模式。系统流程包括数据预处理、特征提取(前端层学习基础特征,深层学习运动模式)、池化、Dropout及全连接层分类。MATLAB程序示例展示了选择图像、预处理后进行分类的交互过程。当按下按钮,图像被读取、调整大小并输入网络,最终通过classify函数得到预测标签。
10 0
|
2月前
|
算法 数据安全/隐私保护
matlab学习(三)
matlab学习(三)
|
2月前
|
计算机视觉
matlab学习(一)(3.26-4.1)
matlab学习(一)(3.26-4.1)

热门文章

最新文章