matlab

更新时间:2024-06-26 22:02:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

MATLAB结课论文

班学姓

级 号 名

电子142 140404059 王娟

日 期: 2016.10.31

I

摘 要

MATLAB(MATrix LABoratory)是MathWorks公司于1984年开发的科学与工程计算软件。它以矩阵运算为基础,将高性能的数值计算和符号计算功能、强大的绘图功能、动态系统仿真功能以及为数众多的应用工具箱集成在一起,是颇具特色和影响的科学计算软件,在科学研究以及工程设计领域有着十分广泛的应用。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。

MATLAB由一系列工具组成。这些工具方便用户使用MATLAB的函数和文件,其中许多工具采用的是图形用户界面。包括MATLAB桌面和命令窗口、历史命令窗口、编辑器和调试器、路径搜索和用于用户浏览帮助、工作空间、文件的浏览器。随着MATLAB的商业化以及软件本身的不断升级,MATLAB的用户界面也越来越精致,更加接近Windows的标准界面,人机交互性更强,操作更简单。而且新版本的MATLAB提供了完整的联机查询、帮助系统,极大的方便了用户的使用。简单的编程环境提供了比较完备的调试系统,程序不必经过编译就可以直接运行,而且能够及时地报告出现的错误及进行出错原因分析。

MATLAB是一个高级的矩阵/阵列语言,它包含控制语句、函数、数据结构、输入和输出和面向对象编程特点。用户可以在命令窗口中将输入语句与执行命令同步,也可以先编写好一个较大的复杂的应用程序(M文件)后再一起运行。新版本的MATLAB语言是基于最为流行的C++语言基础上的,因此语法特征与C++语言极为相似,而且更加简单,更加符合科技人员对数学表达式的书写格式。使之更利于非计算机专业的科技人员使用。而且这种语言可移植性好、可拓展性极强,这也是MATLAB能够深入到科学研究及工程计算各个领域的重要原因。

关键词:矩阵运算;仿真功能;工具;绘图功能

II

目 录

第1章 绪论 .............................................................................................................. 1

1.1 MATLAB的发展概况 .................................................................................. 1 1.2 MATLAB的主要功能 .................................................................................. 2 第2章 数值计算与多项式计算 .............................................................................. 1

2.1 数值计算 ...................................................................................................... 1 2.2 多项式计算 .................................................................................................. 3 第3章 图形绘制 ...................................................................................................... 5

3.1 二维曲线的绘制 .......................................................................................... 5 3.2 二维统计分析图的绘制 .............................................................................. 6 3.3 三维图形的绘制 .......................................................................................... 8

3.3.1 三维曲线 ............................................................................................ 8 3.3.2 三维曲面 ............................................................................................ 8

第4章 Simulink仿真 ............................................................................................. 11

4.1 常用仿真模块库介绍 ................................................................................ 11 4.2 仿真实例 .................................................................................................... 14

4.2.1 单相半波可控整流电路(电阻性负载) ...................................... 14 4.2.2 单相全波可控整流电路(电阻性负载) ...................................... 16

第5章 控制系统中的应用 .................................................................................... 20

5.1 系统的时域分析法 .................................................................................... 20 5.2 根轨迹 ........................................................................................................ 21 5.3 系统的频域分析法 .................................................................................... 22

5.3.1 绘制极坐标图 .................................................................................. 22 5.3.2 绘制Bode图 .................................................................................... 23

参考文献 .................................................................................................................. 24

III

第1章 绪论

1.1 MATLAB的发展概况

20世纪70年代后期,时任美国新墨西哥大学计算机科学系主任的Cleve Moler教授为减轻学生编程负担,为学生设计了一组调用LINPACK和 EISPACK库程序的通俗易用的接口,此即用Fortran编写的萌芽状态的MATLAB。尽管功能十分简单,但当作免费软件,还是吸引了大批使用者。经过几年的校际流传,在John Little、Cleve Moler、和Steve Bangert合作,于1984年成立了MathWorks公司,并正式推出MATLAB第1版(DOS版)。从这时起,MATLAB的核心采用C语言编写,功能越来越强,除原有的数值计算功能外,还新增了图形处理功能。

Math Works公司于1992年推出了具有划时代意义的MATLAB 4.0版,该版本可以配合Windows一起使用,随之推出的符号计算工具包和用于动态系统建模、仿真、分析的集成环境Simulink,并加强了大规模的数据处理能力,使之应用范围越来越广。1997年春,MATLAB 5.0版问世,该版本支持了更多的数据结构,如单元数据、结构数据、多维数组、对象与类等,使其成为一种更方便,更完善的编程语言。2000年10月,MATLAB 6.0版问世,在操作界面上有了很大的改观,为用户的使用提供了很大方便;在计算性能方面,速度变得更快,数值性能也更好;在图形用户界面设计上也更趋合理;与C语言的接口和转换的兼容性也更强;与之配套的Simulink 4.0版的新功能也特别引人注目。2002年6月又推出了MATLAB 6.5版和Simulink 5.0版,在计算方法、图形功能、用户界面设计、编程手段、工具等方面都有了重大改进。

2004年7月,Math Works公司推出了MATLAB 7.0版;2005年9月,Math Works公司推出了MATLAB 7.1版。随后每年发布两次以年份命名的版本。MATLAB的工具箱,为不同领域内使用MATLAB的研究开发者提供了一条捷径。当控制界正致力于研究线性矩阵不等式时,当信号处理界正沉浸在回味小波变换之余时,当模糊理论、神经网络发展迅速时,Math Works公司适应时代发展的需求及时的推出了LMI控制工具箱、小波工具箱、模糊逻辑工具箱、神经网络工具箱等。MATLAB的工具箱不仅种类繁多而且功能强大,吸引了广大的使用者。到目前为止,MATLAB的工具箱已有几十种,内容包括:数学、化学、电力系统、图像处理、信号处理、自动控制等许多领域。

1

1.2 MATLAB的主要功能

MATLAB 将高性能的数值计算和可视化集成在一起,并提供了大量的内置函数,从而被广泛地应用于科学计算、控制系统、信息处理等领域的分析、仿真和设计工作,而且利用 MATLAB 产品的开放式结构,可以非常容易地对 MATLAB 的功能进行扩充,从而在不断深化对问题认识的同时,不断完善 MATLAB 产品以提高产品自身的竞争能力。

目前 MATLAB 产品族可以用来进行数值分析、数值和符号计算、工程与科学绘图、控制系统的设计与方针、数字图像处理、数字信号处理、通讯系统设计与仿真、财务与金融工程。MATLAB 是MATLAB产品家族的基础,它提供了基本的数学算法,例如矩阵运算、数值分析算法,MATLAB集成了2D和3D图形功能,以完成相应数值可视化的工作,并且提供了一种交互式的高级编程语言——M语言,利用M语言可以通过编写脚本或者函数文件实现用户自己的算法。

2

第2章 数值计算与多项式计算

2.1 数值计算

1.求最大值和最小值

max(A):如果A是向量,则返回向量A的最大值。如果A中包含复数元素,则按模取最大值。如果A是矩阵,则返回一个行向量,向量的第i个元素是矩阵A的第i列上的最大值。

[Y,U]=max(A):如果A是向量,则返回向量A的最大值存入Y,最大值的序号存入U。如果A中包含复数元素,则按模取最大值。如果A是矩阵,则Y向量记录A的每列的最大值,U向量记录每列最大值的行号。

max(A,[ ],dim):仅用于矩阵。dim取1或2。dim取1时,该函数和max(A)完全相同;dim取2时,该函数返回一个列向量,其第i个元素是A矩阵的第i行上的最大值。

2.求和与求积

数据序列求和的函数是sum。sum函数的调用格式如下。

sum(A):如果A是一个向量,则返回向量各元素的和。如果A是一个矩阵,则返回一个行向量,其第i个元素是A的第i列的元素和。

sum(A,dim):当dim为1时,该函数等同于sum(A);当dim为2时,返回一个列向量,其第i个元素是A的第i行的各元素之和。

数据序列求积的函数是prod,其用法和sum完全相同。

3.平均值和中值

数据序列的平均值指的是算术平均值。中值是指在数据序列中其值的大小恰好处在中间的元素。例如

数据序列 ?2,5,7,9,12的中值为7

如果数据为偶数个,则中值等于中间的两项之平均值。例如,数据序列 ?2,5,6,7,9,12中,处于中间的数是6和7,故其中值为此两数之平均值6.5。

求数据序列平均值的函数是mean,mean函数的调用格式如下。

mean(A):如果A是一个向量,则返回向量的算术平均值。如果A是一个矩阵,则返回一个行向量,其第i个元素是A的第i列的算术平均值。

mean(A,dim):当dim为1时,该函数等同于mean(A);当dim为2时,返回一个列

1

向量,其第i个元素是A的第i行的算术平均值。

求数据序列中值的函数是median,其用法和mean完全相同。

4.累加和与累乘积

所谓累加和或累乘积,是指从数据序列的第1元素开始直到当前元素进行累加或累乘,作为结果序列的当前元素值。

在MATLAB中,使用cumsum和cumprod函数求得向量和矩阵元素的累加和与累乘积向量。cumsum函数的调用格式如下。

cumsum(A):如果A是一个向量,则返回向量的累加和。如果A是一个矩阵,则返回一个矩阵,其第i列是A的第i列的累加和向量。

cumsum(A,dim):当dim为1时,该函数等同于cumsum(A);当dim为2时,返回一个矩阵,其第i行是A的第i行的累加和向量。

求累乘积的函数是cumprod,其用法和cumsum完全相同。

5.标准方差与相关系数 (a).求标准方差

方差描述了一组数据波动的大小,方差越小,数据波动越小。在MATLAB中,提供了计算数据序列的标准方差的函数std。对于向量X,std(X)返回一个标准方差。对于矩阵A,std(A)返回一个行向量,它的各个元素便是矩阵A各列或各行的标准方差。std函数的一般调用格式为

Y=std(A,flag,dim)

其中flag取0或1,当flag=0时,按σ1所列公式计算标准方差;当flag=1时,按σ2所列公式计算标准方差。dim取1或2,当dim=1时,求各列元素的标准方差;当dim=2时,则求各行元素的标准方差。默认flag=0,dim=1。

(b).相关系数

相关系数用来衡量两组数据之间的线性相关程度。 corrcoef函数用于求数据的相关系数矩阵。 corrcoef(X,Y):求向量X和Y的相关系数。

corrcoef(X):返回从矩阵X形成的一个相关系数矩阵。它把矩阵X的每列作为一个变量,然后求它们的相关系数。

6.排序

MATLAB提供了对向量X进行排序的函数sort(X),函数返回一个对X中的元素按升序排列的新向量。

2

sort函数也可以对矩阵A的各列或各行重新排序,其调用格式为 [Y,I]=sort(A,dim,mode)

其中Y是排序后的矩阵,而I记录Y中的元素在A中的位置。dim指明对A的列还是行进行排序,若dim=1,则按列排;若dim=2,则按行排。mode指明按升序还是降序排序,'ascend'为升序,'descend'为降序。dim默认取1,mode默认取'ascend'。

2.2 多项式计算

(1).多项式的加减运算

在MATLAB中,多项式的加减运算就是其所对应的系数向量的加减运算。如果多项式的次数不同,则应该把低次的多项式系数不足的高次项用0补足,使同式中的各多项式具有相同的次数。例如,计算(x3?2x2+5x+3)+(6x?1),命令如下:

a=[1,-2,5,3]; b=[0,0,6,-1]; c=a+b c =

1 -2 11 2

(2).多项式乘除运算

函数conv(P1,P2)用于求多项式的乘积,其中P1、P2是两个多项式的系数向量。 函数[Q,r]=deconv(P1,P2)用于对多项式作除法运算,其中P1、P2是两个多项式的系数向量,返回值Q是商式的系数向量,r是余式的系数向量。

(3).多项式的导函数 对多项式求导数的函数如下。 p=polyder(P):求多项式P的导函数 p=polyder(P,Q):求P·Q的导函数

[p,q]=polyder(P,Q):求P/Q的导函数,导函数的分子存入p,分母存入q。 上述函数中,参数P、Q是多项式的系数向量,结果p、q也是多项式的系数向量。

(4).多项式的求值

MATLAB提供了两种求多项式值的函数:polyval与polyvalm,它们的输入参数均为多项式系数向量P和自变量x。两者的区别在于前者是代数多项式求值,而后者是矩阵多项式求值。

(a).代数多项式求值

3

polyval函数用来求代数多项式的值,其调用格式为 Y=polyval(P,x)

若x为一数值,则求多项式在该点的值;若x为向量或矩阵,则对向量或矩阵中的每个元素求其多项式的值。

(b).矩阵多项式求值

polyvalm函数用来求矩阵多项式的值,其调用格式与polyval相同,但含义不同。polyvalm函数要求x为方阵,它以方阵为自变量求多项式的值。设A为方阵,P代表多项式

,那么polyvalm(P,A)的含义为

A*A*A?5*A*A+8*eye(size(A)) 而polyval(P,A)的含义为

A.*A.*A?5*A.*A+8*ones(size(A))

(5).多项式求根

roots函数用于求多项式的全部根,其调用格式为 x=roots(P)

其中P为多项式的系数向量,求得的根赋给向量x,即x(1),(2),…,x(n)分别代表多项式的n个根。

若已知多项式的全部根,则可以用poly函数建立起该多项式,其调用格式为 P=poly(x)

其中x为具有n个元素的向量。poly(x)建立以x为其根的多项式,且将该多项式的系数赋给向量P。

4

第3章 图形绘制

3.1 二维曲线的绘制

二维曲线是将平面上坐标上的数据点连接起来的平面图形。除直角坐标系外,还可+ 采用对数坐标、极坐标。数据点可以用向量或矩阵形式给出,类型可以是实型或复型。二维曲线的绘制是其他绘图操作的基础。

(1)plot函数 plot(x,y)

其中x和y为大小相同的向量,分别用于存储x坐标和y坐标数据。

(a)当x和y是同维矩阵时,配对的x、y按对应列元素为横、纵坐标分别绘制曲线,曲线条数等于矩阵的列数。例如,在同一坐标中绘制3条幅值不同的正弦曲线,命令为

x=0:pi/10:2*pi; y=sin(x);

plot([x;x;x]',[y;y*2;y*3]')

当x是向量,y是有一维与x同维的矩阵时,则绘制出多根曲线,曲线条数等于y矩阵的另一维数,x被作为这些曲线共同的横坐标。例如,在同一坐标中绘制3条幅值不同的正弦曲线,命令也可以写成:

x=0:pi/10:2*pi; y=sin(x);

plot(x,[y;y*2;y*3])

(b)当plot函数只有一个输入参数时,即 plot(y)

若y是实型向量,则以该向量元素的下标为横坐标、元素值为纵坐标画出一条连续曲线;若y是复数向量,则分别以向量元素实部和虚部为横、纵坐标绘制一条曲线。若y是实矩阵,则按列绘制每列元素值相对其下标的曲线,曲线条数等于输入参数矩阵的列数;若y是复数矩阵,则按列分别以元素实部和虚部为横、纵坐标绘制多条曲线。

(c)当plot函数有多个输入参数,且都为向量时,即 plot(x1,y1,x2,y2,…,xn,yn)

其中,x1和y1,x2和y2,……,xn和yn分别组成一组向量对,每一组向量对的长度可以不同。每一向量对可以绘制出一条曲线,这样可以在同一坐标内绘制出多条曲线。例如,在同一坐标中绘制3条幅值不同的正弦曲线,命令也可以写成:

5

x=0:pi/10:2*pi; y=sin(x);

plot(x,y,x,y*2,x,y*3)

y?sintsin(9t)及其包络线。 【例3.1】绘制曲线

程序如下: t=(0:pi/100:pi)'; y1=sin(t)*[1,-1]; plot(t,[y1,y2]') grid on; box on;

(2).具有两个纵坐标标度的图形

绘制出具有不同纵坐标标度的两个图形,可以使用plotyy绘图函数。这种图形有利于图形数据的对比分析。

plotyy(x1,y1,x2,y2)

其中,x1和y1对应一条曲线,x2和y2对应另一条曲线。横坐标的标度相同,纵坐标有两个,左纵坐标用于x1、y1数据对,右纵坐标用于x2、y2数据对。

axis equal

%加网格线 %加坐标边框 %坐标轴采用等刻度

%包络线函数值

y2=sin(t).*sin(9*t);

3.2 二维统计分析图的绘制

(1)条形图。

MATLAB中提供了多个函数可绘制各种条形图,bar函数绘制柱形图,barh函数绘制水平条形图,stem函数绘制杆图,errorbar函数绘制误差条图。下面以bar函数为例,说明条形图函数的用法。bar函数的基本用法与plot函数相似,其调用格式为

bar(x,width,style):

当x是m × n阶的矩阵时,绘制的条形图以分组或堆积的形式表现。矩阵中每一行元素绘制在一组中,每一列元素绘制在每组中相对应的位置上。其中,width设置条形的相对宽度和控制在一组内条形的间距,默认值为0.8,style指定条形的排列模式,类型有'group'(分组)和 'stack'(堆积),默认时采用'group'模式。

(2)饼图。

饼图能反映每一数值相对于总数值的大小。MATLAB中绘制饼图的函数是pie,其调用格式为

6

pie(x,explode)

pie函数使用x中的数据绘制一个饼图,x可以是向量或矩阵。explode是与x同等大小的向量或矩阵,与explode的非零值对应的部分将从饼图中心分离出来。默认explode时,饼图是一个整体。

【例3.2】表3.1所示为某公司3类产品个季度的销售额(万元),分别按季度绘制簇状形图和堆积条形图。用饼图分析例3.10中产品A该年度各季度的产品销售情况。

表3.1 产品全年销售额(单位:万元)

x=[51,82,34,47;67,78,68,90;78,85,65,50]'; subplot(1,2,1); bar(x,'group');

title('Group');axis([0 5 0 100]); subplot(1,2,2); barh(x,'stack'); title('Stack');

pie(x(:,1),[0 0 0 1]) title('饼图');

legend('一季度','二季度','三季度','四季度');

7

(3)散点图。

散点图是数据点在直角坐标系平面上的分布图。MATLAB中绘制散点图的函数是scatter,其调用格式为

scatter(x,y,s,c,'filled')

其中,x、y、s和c为同等大小的向量。x和y用于定位数据点;s指定绘图点的大小,s也可以是一个标量,则所有数据点同等大小;c指定绘图所使用的色彩,c也可以是一个标量,所有数据点使用同一种颜色;'filled'表示填充绘图点,默认时,数据点是空心的。

3.3 三维图形的绘制

3.3.1 三维曲线

最基本的三维图形函数为plot3,其调用格式为

plot3(x1,y1,z1,选项1,x2,y2,z2,选项2,…,xn,yn,zn,选项n)

其中,每一组x,y,z组成一组曲线的坐标参数,选项的定义和plot函数相同。当x、y、z是同维向量时,则x、y、z对应元素构成一条三维曲线;当x、y、z是同维矩阵时,则以x、y、z对应列元素绘制三维曲线,曲线条数等于矩阵列数。

【例3.3】绘制三维曲线。 程序如下: t=0:pi/10:10*pi; x=sin(t)+t.*cos(t); y=cos(t)-t.*sin(t); z=t;

plot3(x,y,z);

axis([-30 30 -30 30 0 35]) title('Line in 3-D Space');

xlabel('X');ylabel('Y');zlabel('Z'); grid on;

3.3.2 三维曲面

MATLAB中绘制三维网格图和曲面图,先要生成在x?y平面的网格数据,再以一组z

8

轴的数据对应到这个二维的网格,然后调用绘图函数绘制。

(1).产生三维数据

在MATLAB中产生三维图形数据的方法是:将x方向区间[a,b]分成m份,将y方向区间[c,d]分成n份,由各划分点分别作平行于两坐标轴的直线,将区域[a,b]×[c,d]分成m×n个小矩形,生成代表每一个小矩形顶点坐标的平面网格坐标矩阵,最后求对应网格坐标的Z矩阵。

MATLAB中的meshgrid函数可以将向量转换为矩阵。meshgrid函数的调用格式为 [X,Y]=meshgrid(x,y); 其中x、y为向量。

(2).绘制三维曲面的函数

MATLAB提供了mesh函数和surf函数来绘制三维曲面图。mesh函数用于绘制三维网格图;surf用于绘制三维曲面图,各线条之间的补面用颜色填充。surf函数和mesh函数的调用格式为

mesh(x,y,z,c) surf(x,y,z,c)

一般情况下,x、y、z是维数相同的矩阵。x、y是网格坐标矩阵,z是网格点上的高度矩阵,c用于指定在不同高度下的颜色范围。c默认时,MATLAB认为c = z,即颜色的设定是正比于图形的高度的,这样就可以画出层次分明的三维图形。当x,y是向量时,要求x的长度等于z矩阵的列,y的长度等于z矩阵的行,x、y向量元素的组合构成网格点的x、y坐标,z坐标则取自z矩阵,然后绘制三维曲面图。

【例3.4】绘制三维曲面图z = sinx2 + cosy2,x?[0,?],y?[0,?/2]。 程序如下:

[x,y]=meshgrid(0:pi/100:pi, 0:pi/100:pi/2); z=sin(x.^2)+cos(y.^2); mesh(x,y,z);

axis([0 4 0 1.8 -1.5 1.5]);

9

(3).标准三维曲面

(a)sphere函数。sphere函数用于绘制三维球面,其调用格式为 [x,y,z]=sphere(n)

该函数将产生(n + 1)×(n + 1)矩阵x、y、z,采用这3个矩阵可以绘制出圆心位于原点、半径为1的单位球体。若在调用该函数时不带输出参数,则直接绘制所需球面。n决定了球面的圆滑程度,其默认值为20。若n值取得较小,则将绘制出多面体表面图。

(b)cylinder函数。cylinder函数用于绘制柱面,其调用格式为 [x,y,z]= cylinder(R,n)

其中,R是一个向量,存放柱面各个等间隔高度上的半径;n表示在圆柱圆周上有n个间隔点,默认时表示有20个间隔点。例如,cylinder(3)生成一个圆柱,cylinder([10,1])生成一个圆锥,而

t=0:pi/100:4*pi; R=sin(t); cylinder(R,30) 生成一个正弦型柱面。

(c)peaks函数。peaks函数(多峰函数)常用于三维曲面的演示。该函数可以用来生成绘图数据矩阵,例如:

z = peaks(30);

将生成一个30 × 30的矩阵z,即分别沿x和y方向将区间[?3,3]等分成29份,并计算这些网格点上的函数值。默认参数时将生成一个49 × 49的矩阵。也可以根据网格坐标矩阵x、y重新计算函数值矩阵。例如:

[x,y]=meshgrid(-5:0.1:5); z=peaks(x,y);

生成的数值矩阵可以作为mesh、surf等函数的参数而绘制出多峰函数曲面图。另外,若在调用peaks函数时不带输出参数,则直接绘制出多峰函数曲面图。

10

第4章 Simulink仿真

4.1 常用仿真模块库介绍

Simulink 的模块库有两部分组成:基本模块和各种应用工具箱,如下图所示。对通信系统仿真来说,主要用到 Simulink 基本库,通信系统工具箱和数字信号处理工具箱。

图4.1 Simulink模块库

11

(1) 连续模块Continuous

名称 Derivative Integrator Integrator Limited Integrator, Second-Order Integrator, Second-Order Limited PID Controller PID PID Controller (2DOF) PID State-Space Transfer Fcn Transport Delay Variable Transport Delay Zero-Pole 功能说明 微分 积分器 定积分 二阶积分 二阶定积分 控制器 控制器 状态空间 传递函数 传输延时 可变传输延时 零—极点增益模型

(2) 数学模块Math Operations

名称 Abs Add Algebraic Constraint Assignment Bias Complex to Magnitude-Angle Complex to Real-Imag Divide Dot Product Gain Magnitude-Angle to Complex Math Function Matrix Concatenation MinMax MinMax Running Resettable 12

功能说明 取绝对值 加法 代数约束 赋值 偏移 由复数输入转为幅值和相角输出 由复数输入转为实部和虚部输出 除法 点乘运算 比例运算 由幅值和相角输入合成复数输出 包括指数函数、对数函数、求平方、开根号等常用数学函数 矩阵级联 最值运算 最大最小值运算

Real-Imag to Complex Unary Minus Trigonometric Function Sqrt Sum Subtract Product 由实部和虚部输入合成复数输出 一元减法 三角函数 平方根 求和运算 减法 乘运算

(3) 信号线路模块Signal Routing

名称 Bus Assignment Bus Creator Bus Selector Data Store Memory Demux Data Store Read Data Store Write Mux 功能说明 总线分配 总线生成 总线选择 数据存储 分路 数据存储读取 数据存储写入 合路

(4) 接收器模块Sinks

名称 Display Floating Scope Scope Out1 Stop Simulation Terminator To File To Workspace XY Graph 功能说明 数字显示器 浮动示波器 示波器 输出端口 停止仿真 终止符号 将输出数据写入数据文件保护 将输出数据写入MATLAB 的工作空间 显示二维图形

13

(5) 输入源模块Sources 名称 Clock Constant Counter Free-Running Digital Clock Counter Limited Enumerated Constant From File From Workspace Ground In1 Pulse Generator Ramp Sine Wave Signal Generator Step 功能说明 显示和提供仿真时间 常数信号 无限计数器 数字时钟 有限计数器 枚举常量 来自文件 来自MATLAB的工作空间 接地 输入信号 脉冲发生器 斜坡输入 正弦波信号 信号发生器,可产生正弦、方波、锯齿波及随意波 阶跃信号

4.2 仿真实例

4.2.1 单相半波可控整流电路(电阻性负载)

图4.2 单相半波整流电路(电阻性负载)

14

(1)Pulse的参数设置对话框

图4.3 Pulse的参数设置对话框

(2)晶闸管模块设置:

R=0.001Ω;L=0H;Vf=0.8V; Rs=20Ω;Cs=4e—6F;

串联RLC元件模块和接地模块到Thyristor模型 R=1Ω;L=0.01H

(3)仿真参数:

选择ode23tb算法,将相对误差设置为1e-3 开始仿真时间设置为0,停止仿真时间设置为0.1

(4)脉冲信号发生器

参数”Phase delay”(相位延迟)的计算。脉冲信号发生器相位延迟t在电路里就是晶闸管的控制角α,两者之间的关系:

15

对电网交流电T=0.02s,当α=0时,t=0(时间仿真模型中应使t ≠0,这里t=0.0001s) 当α=

时,t=0.02/12=0.00167s。

图4.4 α=0°单相半波整流桥仿真结果

4.2.2 单相全波可控整流电路(电阻性负载)

图4.5单相全波可控整流电路(电阻性负载)

16

(1)交流电源参数设置

图4.6 交流电源参数

(2)脉冲信号发生器

图4.7 Pulse Generator参数

17

图4.8 Pulse Generator1参数

(3)示波器参数

示波器五个通道信号依次是:①通过晶闸管电流Ial;②晶闸管电压Ual;③电源电流i2④通过负载电流Id;⑤负载两端的电压Ud。 (4)电阻

R=1欧姆

图4.9 α=0°单相全波整流桥仿真结果

18

图4.10 α=30°单相全波整流桥仿真结果

19

第5章 控制系统中的应用

5.1 系统的时域分析法

时域分析是一种直接在时间域中对系统进行分析的方法,具有直观和准确的优点。它是根据控制系统输入与输出之间的时域表达式,分析系统的稳定性、瞬态过程和稳态误差。控制系统最常用的分析方法有两种:一是当输入信号为单位阶跃时,求出系统的响应;二是当输入信号为单位冲激函数时,求出系统的响应。

(1)生成特定的激励信号的函数gensig( )

格式:[u,t] = gensig(type,tau)或[u,t] = gensig(type,tau,Tf,Ts)

功能:按指定的类型type和周期tau生成特定类型的激励信号u。其中变元type可取字符为:‘sin’(正弦)、‘square’(方波)、‘pulse’(脉冲)。Tf指定信号的持续时间。Ts为采样周期t之间的间隔。

(2)LTI模型的单位冲激响应函数impulse( ) 格式:impulse(sys)

功能:绘制系统sys(sys由函数tf、zpk或ss产生)的单位冲激响应,结果不返回数据,只返回图形。

(3)状态空间模型系统的零输入响应函数initial( ) 格式:initial(sys,x0)

功能:绘制状态空间模型sys在初始条件x0下的零输入响应,不返回数据,只绘出响应曲线。该响应由如下方程表征:

连续时间:x '?Axy?Cxx(0)?x0[k?1]?Ax[k]y[k]?Cx[k]x[0]?x0离散时间:x

(4)LTI模型任意输入的响应函数lsim( ) 格式:lsim(sys,u,T)

功能:计算和绘制LTI模型sys在任意输入u、持续时间T的作用下的输出y,不返回数据,只返回图形。T为时间数组,它的步长必须与采样周期Ts相同。当u为矩阵时,它的列作为输入,且与T(i)行的时间向量相对应。例如t = 0:0.01:5; u = sin(t); lsim(sys,u,t)完成系统sys对输入u(t)=sin(t)在5秒内的响应仿真。

20

(5)LTI模型的阶跃响应函数step( ) 格式:step(sys)

功能:绘制系统sys(sys由函数tf、zpk或ss产生)的阶跃响应,结果不返回数据,只返回图形。对多输入多输出模型,将自动求每一输入的阶跃响应。

5.2 根轨迹

在控制系统分析中,为了避开直接求解高阶多项式的根时遇到的困难,在实践中提出了一种图解求根法,即根轨迹法。所谓根轨迹是指当系统的某一个(或几个)参数从-∞到+∞时,闭环特征方程的根在复平面上描绘的一些曲线。应用这些曲线,可以根据某个参数确定相应的特征根。在根轨迹法中,一般取系统的开环放大倍数K作为可变参数,利用它来反映出开环系统零极点与闭环系统极点(特征根)之间的关系。

根轨迹可以分析系统参数和结构已定的系统的时域响应特性,以及参数变化对时域响应特性的影响,而且还可以根据对时域响应特性的要求确定可变参数及调整开环系统零极点的位置,并改变它们的个数,也就是说根轨迹法可用于解决线性系统的分析与综合问题。

MATLAB提供了专门绘制根轨迹的函数命令,如下表所示,使绘制根轨迹变得轻松自如。

函数名 pzmap tzero rlocfind rlocus damp pole dcgain dsort esort 功 能 绘制系统的零极点图 求系统的传输零点 计算给定根轨迹增益 求系统根轨迹 求系统极点的固有频率和阻尼系统 求系统的极点 求系统的直流(稳态)增益 离散系统极点按幅值降序排列 连续系统极点按实部降序排列 表5.1 系统根轨迹绘制及零极点分析函数

格式 pzmap(sys) z = tzero(sys) [K,poles] = rlocfind(sys) rlocus(sys) [Wn,Z] = damp(sys) p = pole(sys) k = dcgain(sys) s = dsort(p) s = esort(p) 在MATLAB中,有3个与根轨迹相关的函数:pzmap()、rlocus()、rlocfind()

(a)pzmap()函数

21

此函数是用来绘制系统的零极点图。其调用格式为

pzmap(sys) %绘制系统的零极点图 [p,z]=pzmap(sys) %不绘制零极点图,而直接返回系统sys的零极点

(b)rlocus()函数

此函数是绘制系统的根轨迹图。其调用格式为

rlocus(sys) %绘制系统sys的根轨迹(增益k由0至无穷) R=rlocus(sys,k) %不绘制图形,返回系统sys增益取k时所对应的极点

(c)rlocfind()函数

该函数的功能是在给定一组根的情况下,找出增益的大小。调用格式为 [k,poles]=rlocfind(sys) %计算给定极点poles所对应的增益k [k,poles]=rlocfind(sys,p) %对指定根计算对应的增益k和根矢量p

5.3 系统的频域分析法

5.3.1 绘制极坐标图

在Matlab控制系统工具箱中提供了一个函数nyquist(),该函数的功能是绘制系统的奈奎斯特曲线,并可以根据曲线分析包括相位裕度、幅值裕度及稳定性等系统特性,有两种调用格式。

(1).nyquist(sys)

此调用格式的功能是直接绘制系统sys的奈奎斯特曲线。 (2).[re,im,w]=nyquist(sys)

此调用格式的功能并不是直接绘制曲线,而是返回系统频率响应的实部(Re)、虚部(Im)以及对应的角频率ω。

[例5-1] 试绘制开环系统H(s)的Nyquist曲线,判断闭环系统的稳定性,并求出

H(s)?闭环系统的单位阶跃响应。其中 。

50(s?5)(s?2)MATLAB程序为: k=50;z=[];p=[-5,2]; sys=zpk(z,p,k);

figure(1);nyquist(sys);title('Nyquist曲线图'); figure(2);sb=feedback(sys,1); step(sb);title(‘单位阶跃响应');

22

图5.1 开环系统的Nyquist曲线图及阶跃响应

Amplitude单位阶跃响应21.81.61.41.210.80.60.40.2000.511.52Time (sec)2.533.545.3.2 绘制Bode图

Matlab提供了一个直接求解和绘制系统Bode图的函数bode()和一个直接求解系统幅值稳定裕度和相位稳定裕度的函数margin()。

(1).bode()函数 此函数的调用格式有:

(a)bode(sys):直接计算并绘制系统的Bode图。

(b)bode(sys,w):也是直接计算并绘制系统的Bode图,但是可以用w来定义绘制Bode图时的频率范围或者频率点。

(c)[mag,phase,w]=bode(sys)

此格式调用后,并不绘制曲线,而只是计算出系统Bode图的输出数据,其中mag为系统的幅值,phase为Bode图的相位,w为所对应的频率。

(2)margin()函数 (a)margin(sys)

此调用格式可在当前图形窗口中绘制带有稳定裕度的Bode图。 (b)[kg,r,wg,wc]=margin(sys)

此调用格式不绘制图形,只返回稳定裕度的4个值,分别为幅值裕度kg、相位裕度γ(度)、相位穿越频率ωg、幅值穿越频率ωc。

23

参考文献

[1] Eva Part-Enander .MATLAB手册.北京:机械工业出版社,2013 [2] David McMahon. MATLAB揭秘.Mc Graw Hill,2010 [3] Math Works.MATLAB官方手册.2015

[4] 苏金明,张莲花,刘波.MATLAB工具箱应用.北京:电子工业出版社,2014 [5] 王正林,刘明.精通MATLAB7.北京:电子工业出版社,2008 [6] 苏金明,阮沈勇。MATLAB实用教程,北京:电子工业出版社,2008

24

本文来源:https://www.bwwdw.com/article/fea3.html

Top