




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 第一章 MATLAB的简介1.1 概述1.1 概述1.1 概述MATLAB是MathWorks公司于1982年推出的一套高性能的数值计算和可视化软件,MATLAB的图形、打印、联机帮助等功能齐全。它集数值分析、矩阵运算、信号处理和图形显示于一体,构成了一个方便的、界面友好的用户环境。MATLAB的推出得到了各个领域专家学者的广泛关注,其强大的扩展功能为各个领域的应用提供了基础。现在比较新的版本是7.0版。MATLAB是一个计算核心,围绕着这个计算核心,有许多针对不同应用所开发的应用程序,称为工具箱(Toolboxes)。工具箱的总数已有上百个,其中主要有:信号处理(Signal Proces
2、sing)、控制系统(Control System)、神经网络(Neural Network)、通信(Communication)、图像处理(Image Processing)、鲁棒控制(Robust Control)、非线性控制系统设计(Nonlinear Control System Design)、系统辨识(System Identification)、最优化(Optimization)、分析与综合( Analysis and Synthesis)、模糊系统(Fuzzy System)、小波(Wavelet)分析和样条(Spline)等工具箱。这些工具箱给各个领域的研究和工程应用提供了有
3、利的帮助,各个层次的研究人员可直观、方便地进行分析、计算及设计工作,大大地节省了编程时间。除MATLAB之外,MathWorks公司还有两项主要相关产品,即Simulink及Stateflow。Simulink专用于连续或离散时间的动态系统仿真;Stateflow则用于仿真有限状态机(Finite State Machines)或事件驱动系统(Event-driven Systems)。控制基础课程安排实验的目的就是让非电专业的学生初步掌握MATLAB语言,学会用简单的MATLAB函数分析线性控制系统的基本性能,从而为今后的学习和工作打下基础。MATLAB下提供了两种文件格式,其中一种是普通的
4、ASCII码构成的文件,在这样的文件中只能由MATLAB语言所支持的语句,类似于DOS下的批处理文件,这种文件称为M文件,它的执行方式很简单,用户只需在“file”下新建一个“M-file”,在“M-file”窗口下逐条输入语句,存盘在“work” 文件夹下,然后单击“debug”下的“run”,这样在“Conmand Window”窗口下即可看到执行的结果。它采用文本方式,编程效率高,可读性很强。MATLAB的另一种,也是最常用的特殊M文件称为MATLAB函数,这样的函数是由function语句引导的,其基本格式如下Function返回变量列表=函数名(输入变量列表)注释说明语句段函数体语句
5、使用时用户也是在“M-file”窗口下逐条输入语句,存盘在“work” 文件夹下,调用时在MATLAB的提示符下键入函数名,并包括输入变量。类似于C语言的子程序调用。如function plot_sin(xmin,xmax)x=xmin:min(0.01,(xmax-xmin)/100):xmax;plot(x,sin(x);%This is a demo MATLAB的函数名定义几乎与数学描述一样,接近书写计算公式的思维方式,如min(),max()。它的基本命令包括:数学函数、矩阵、数值方法、绘图、字符串、文件I/O等数百条。1.2 使用变量与基本计算MATLAB能识别一般常用的加(+)、
6、减(-)、乘(*)、除(/)、幂次()等数学运算符号,因此在MATLAB下进行基本运算,最快速简单的方法是在MATLAB命令窗口(Command Window)内的提示符号(>>)之后输入表达式,并按下Enter键即可。例如>>(5*2+3.5)/5ans= 2.7000MATLAB会将计算结果直接存入默认变量ans中(即MATLAB语句的返回值),代表MATLAB运算后的答案(Answer),并在屏幕上显示其运算结果的数值(在上例中,即为2.7000)。若不想让MATLAB每次都显示运算结果,只需在表达式最后加上分号(;)即可,例如:>>(5*2+3.5)
7、/5;在上例中,由于表达式后面加入了分号,因此MATLAB只会将运算结果储存在默认变量ans内,不会显示于屏幕上;在需要时取用或显示此运算结果,可直接输入变量ans ,例如(接上例)>>ansans= 2.7000使用者也可将运算结果储存于使用者自己设定的变量x(或其他变量,如y、x0、x1等)内,例如>> x=(5*2+3.5)/5x= 2.7000MATLAB会将所有在百分比符号(%)之后的文字视为程序的注解(Comments),例如>> y=(5*2+3.5)/5;%将运算结果储存于变量y内,但不显示于屏幕>>z=y2 %将运算结果储存于变
8、量z内,并显示于屏幕z= 7.2900在上例中,百分比符号之后的文字会被 MATLAB忽略不执行,但它的使用可提高MATLAB程序的可读性。MATLAB可同时执行以逗号(,)或分号(;)隔开的数个表达式,例如>>x=sin(pi/3);y=x2;z=y*10z= 7.5000若一个数学表达式太长,可用三个句点(.)将其延伸到下一行,例如>>z=10*sin(pi/3)*.sin(pi/3)z= 7.5000提示:变量命名规则与使用(1)第一个字母必须是英文字母;(2)字母间不可留空格;(3)最多只能有31个字母,MATLAB会忽略多余字母;(4)MATLAB在使用变量时
9、,不需预先经过变量声明的程序,而且所有数值变量均以默认的double 数据类型储存。1.3 向量与矩阵的处理在上述的各例中,MATLAB的变量用来储存标量(Scalars),其实MATLAB中的变量还可用来储存向量(Vectors)及矩阵(Martrix),MATLAB以复数矩阵为最基本的运算单元,既可以对它整体地进行处理,也可以对它的某个或某些元素进行单独的处理,例如>>s=1 3 5 2; %注意 的使用及各数字间的空白间隔>>t=2*s+1t= 3 7 11 5在上例中,MATLAB使用中括号( ),来建立一个行向量1 3 5 2(或是1×4大小的矩阵1
10、 3 5 2),将其储存于变量s中,再对其进行运算产生另一新的行向量3 7 11 5,并将其结果储存在变量t中。提示:s=1 3 5 2 与s=1, 3, 5, 2的效果是一样的。MATLAB也可取出向量中的一个元素或一部分来做运算,例如(接上例)>>t(3)=2 %将向量t的第三个元素改为2t= 3 7 2 5>>t(6)=10 %在向量t中加入第六个元素,其值为10t=3 7 2 5 0 10>>t(4)= %将向量t的第四个元素删除t=3 7 2 0 10 >>s(2)*3+t(4) %取出向量s的第二个元素和向量t的第四个元素做运算 an
11、s= 9 >>t(2:4)-1 %取出向量t的第二至第四个元素做运算 ans=6 1 -1用类似上述建立向量的方法,使用者可以建立m×n大小的矩阵(m代表矩阵的行数,n代表矩阵的列数),但必须在每一行结尾加上分号(;),例如>>A=1 2 3 4;5 6 7 8;9 10 11 12;%建立3×4的矩阵A>>A %显示矩阵A内容A= 1 2 3 4 5 6 7 8 9 10 11 12同样,我们可以对矩阵进行各种处理,例如(接上例)>>A(2,3)=5 %将矩阵A第二行、第三列的元素值改为5A= 1 2 3 4 5 6 5 8
12、 9 10 11 12>>B=A(2,1:3) %取出矩阵A第二行、第一列至第三列的元素值, %储存成一新矩阵BB=5 6 5>>A=A B %将矩阵B转置后,再以列向量并入矩阵AA= 1 2 3 4 55 6 5 8 69 10 11 12 5 >>A(:,2)= %删除矩阵A第二列(:代表所有行,代表空矩阵)A= 1 3 4 55 5 8 69 11 12 5>>A=A;4 3 2 1 %在原矩阵A中,加入第四行A= 1 3 4 55 5 8 69 11 12 5 4 3 2 1>>A(1 4,:)= %删除第一、第四行(:代表所
13、有列,代表空矩阵)A= 5 5 8 6 9 11 12 5在MATLAB下,矩阵A和矩阵B的乘积(假定其中A、B矩阵是可乘的)可以简单地由运算C=A*B求出>>A=1,0,1;1,0,0;2,1,0;>>B=1,0,2;2,1,1;1,0,1;>>C=A*BC=2 0 31 0 24 1 5而D=A.*B称点乘积运算,即表示A和B矩阵的相应元素之间直接进行乘法运算,然后将结果赋给D矩阵,点乘积运算要求A和B矩阵的维数相同。 >>D=A.*B D= 1 0 2 2 0 0 2 0 01.4 常用数学函数MATLAB是一个科学计算软件,因此它可以支持
14、很多数学函数,例如>>x=4;>>y=abs(x) %取x的绝对值y= 4>>y=sin(x) %取x的正弦值y= -0.7568MATLAB也支持复数运算,通常以i或j代表单位虚数,例如>>z=5+4j %复数z=5+4(此处j也可换成i)z= 5.0000+4.0000i>>y=angle(z) %复数z的相角y=0.6747>>real(z) %返回复数z的实部ans=5MATLAB有相当完整的数学函数及三角函数,见表1.1和表1.2。这些基本数学函数也都可用于向量或矩阵,例如>>x=4 2j 9 ;&g
15、t;>y=sqrt(x) %对x开平方y= 2.0000 1.0000+1.0000j 3.0000 在上例中,sqrt(x)函数会对x的每一个元素进行开平方的运算。另外,MATLAB还有一些函数是特别针对向量设计的,例如>>x=1 2 3 0 12;>>y=min(x) %向量x的最小值y= 0 函数说 明函数说 明abs(x)标量的绝对值或复数的幅值fix(x)对原点方向取紧邻整数exp(x)自然指数exceil(x)对+方向取紧邻整数pow2(x)2的指数2xfloor(x)对-方向取紧邻整数sqrt(x)开平方gcd(x,y)整数x和y的最大公约数log(
16、x)自然对数ln(x)lcm(x,y)整数x和y的最小公倍数log2(x)以2为底的对数log2(x)rem(x,y)求x除以y的余数log10(x)以10为底的对数log10(x)round(x)四舍五入到最近的整数angle(z)复数z的相角sign(x)符号函数当x<0时,sign(x)=-1当x=0时,sign(x)=0当x>0时,sign(x)=1real(z)复数z的实部imag(z)复数z的虚部conj(z)复数z的共轭复数表1.1 MATLAB常用数学函数 表1.2 MATLAB常用三角函数函数说 明函数说 明sin(x)正弦函数asin(x)反正弦函数cos(x)
17、余弦函数acos(x)反余弦函数tan(x)正切函数atan(x)反正切函数sinh(x)双曲正弦函数asinh(x)反双曲正弦函数cosh(x)双曲余弦函数acosh(x)反双曲余弦函数tanh(x)双曲正切函数atanh(x)反双曲正切函数1.5 多项式运算多项式运算是线性代数、线性系统分析中的重要内容。MATLAB提供了多条命令,可以进行多项式运算。一个n次的多项式可以表示为因此,在MATLAB中,可以用一个长度为n+1的行向量来表示p(x)为举例来说,可用p=1,2,0,-5,6来表示一个4次多项式在MATLAB的命令窗口内输入为>>p=1,2,0,-5,6;1.求根及逆运
18、算roots命令可以求解多项式p(x)的根,求出的根按列向量存储。例如,求上面给出的多项式的根,则键入>>r=roots(p)r= -1.8647+1.3584i -1.8647-1.3584i 0.8647+0.6161i0.8647+0.6161ipoly 命令可以由根的列向量求多项式的系数,得到的多项式系数按行向量存储。例如,对于上面求出的根,键入>>p=poly(r)得到 p=1.0000 2.0000 0.0000 5.0000 6.0000 2.有理多项式在线性系统的Fourier变换、Laplace变换和Z变换中,经常用到有理多项式。MATLAB提供了一些
19、命令可以进行有理多项式的运算。MATLAB中的有理多项式是由分子多项式和分母多项式表示的,可以用residue 命令进行部分分式展开。该命令语法为 r,p,k=residue(num,den)其中,num和den分别表示分子和分母多项式的系数行向量。分解的结果形式为式中,k(s)为常数项或纯微分项。例如,对已知传递函数进行部分分式分解,运算过程为>>num=10 30; %定义分子多项式>>den=1 2 4 3; %定义分母多项式>>r,p,k=residue(num,den) %进行部分分式展开r= -3.3333-4.0202i -3.3333+4.0
20、202i6.6667p= -0.5000+1.6583i -0.5000-1.6583i -1.0000k= 其中, k=表示没有常项值。结果表明,传递函数G(s)被分解为下面的部分分式注意,该命令得到的低阶分式都是一阶形式,分子上是常值。显然,由于原传递函数有负特征值,利用该命令得到的展开式不是常用的实数形式。当然,可以利用多项式的乘法命令进行通分得到实数形式。根据给出的r、p、k的值,可以利用同一个命令求出传递函数的有理多项式形式。例如利用上面求出的结果,键入命令>>num,den=residue(r,p,k)得到num= 0 10 30den=1.0000 2.0000 4.
21、0000 3.0000可以看到,求出的分子多项式和分母多项式与给定的传递函数G(s)形式相同。当包含m重极点时,部分分式展开式将包括下列m项:例如, 对于已知系统传递函数:进行部分分式分解,运算过程为>>num=0 1 2 3;>>den=1 3 3 1;>>r,p,k=residue(num,den)r=1.00000.00002.0000 p=-1.0000-1.0000-1.0000k=即 1.6 工作空间MATLAB在进行各种运算时,会将变量储存在内存中,这些储存变量的内存空间称为基本工作空间(Base Workspace),简称工作空间(Works
22、pace)。当每次MATLAB调用执行某一函数时,即进入该函数的暂时工作空间(可视为相对于基本工作空间的下层工作空间),函数可在此暂时工作空间内产生各种变量并进行运算,不会影响到基本工作空间内的变量。当函数执行结束时,MATLAB会同时删除函数的暂时工作空间(当然也会删除储存于其内的所有变量),并回到MATLAB的基本工作空间。以下简述几个有关工作空间的命令。若要查看现存于工作空间(Workspace)的变量,可输入who ,例如>>who Your variables are:A ans s x z B i t y在上例中,只显示这些由使用者定义的变量的名称。若要知道这些变量更详
23、细的信息,如变量占用的内存大小及其储存的数据类型,则可使用whos命令,例如>>whosName Size Bytes ClassA 2×4 64 double array B 1×3 24 double arrayAns 1×18 36 double array i 1×1 8 char array s 1×4 32 double arrayt 1×6 40 double arrayx 1×6 48 double arrayy 1×1 8 double arrayz 1×1 16 doubl
24、e array(complex)Grand total is 47 elements using 276 bytes同时也可以使用clear 命令来清除或删除工作空间内的某一特定或所有变量,以避免内存的闲置与浪费,例如>>clear A %删除工作空间内的变量A>>clear all %删除工作空间内的所有变量值得注意的是,MATLAB有一些永久常数(Permanent Constants),如表1.3所示。虽然在工作空间看不到,但使用者可直接取用,例如>>pians= 3.1416 表1.3 MATLAB永久常数常 数说 明i或j基本虚数单位(即i2=-1
25、)Eps系统的浮点(Floating-point)精确度Inf无限大,例如1/0Nan或NaN非数值(Not A Number),例如0/0Pi圆周率(=3.1415926)Realmax系统所能表示的最大数值Realmin系统所能表示的最小数值Nargin函数的输入变量个数Nargout 函数的输出变量个数第二章 二维平面绘图功能MATLAB不但擅长与矩阵有关的各种数值运算,也具有非常强大的绘图功能,特别适用于各种科学计算可视化(Scientific Visualization)。2.1 基本二维绘图命令MATLAB的plot 是最基本的绘图命令,可以对一组x坐标及相对应的y坐标进行描点绘图
26、(如图2.1所示),例如>>x=linspace(0,2*pi); %在0到2间,等分取100个点>>y=sin(x); %计算x的正弦函数值>>plot(x,y); %进行二维平面描点绘图 图2.1 二维平面描点绘图在上例中,linspace(0,2*pi)产生从0到2且长度为100(默认值)的向量x,y则是相对应的y坐标值,plot(x,y)则可对这100个二维平面上的点进行描点绘图。如果只给定一个向量,那么plot命令会将此向量对其索引值(Index)绘图。因此,若y为一向量,则plot(y)和plot(1:length(y),y)会得到相同的效果。若
27、要利用plot命令一次画出多条曲线,可将x及y坐标依次送入plot命令即可(如图2.2所示),例如>>x=linspace(0,2*pi);>>plot(x,sin(x),x,cos(x),x,sin(x)+cos(x);MATLAB在绘制多条曲线时,会自动转换曲线颜色,以利于分辨(也可由使用者自行制定曲线颜色及其他相关属性)。若要以不同的标志(Marker)来绘图(如图2.3所示),可输入>>x=linspace(0,2*pi);>>plot(x,sin(x),o,x,cos(x),x,x,sin(x)+cos(x),*); 图2.2 多条曲线
28、描点绘图 图2.3 以不同的标志绘图如果z是一个复数向量或矩阵,那么plot(z)是将z的实部(即real(z))和虚部(即imag(z))分别当成x坐标和y坐标来绘图,其效果与plot(real(z), imag(z)相同(如图2.4所示),例如>>x=randn(30); %产生30×30的随机数(正态分布)矩阵>>z=eig(x); %计算x的特征值>>plot(z,o)>>grid on %画出网格线在上例中,x是一个30×30的随机数矩阵,z则是x的特征值。由于z是一复数向量,而且每一个复数都和其共轭复数同时出现,因
29、此所画出的图是上下对称的。图2.4 画出网格线的结果相关的MATLAB基本二维绘图命令,见表2.1。表2.1 MATLAB 基本二维绘图命令命 令说 明plotx轴和y轴均为线性刻度(Linear scale)loglogx轴和y轴均为对数刻度(Logarithmic Scale)semilogxx轴为对数刻度,y轴均为线性刻度semilogyy轴为对数刻度,x轴均为线性刻度例如,若要使x轴为对数刻度,来对正弦函数绘图(如图2.5所示),可如下进行:>>x=linspace(0,8*pi); %在0到8间,等分取100个点>>semilogx(x,sin(x); %x轴
30、为对数刻度,并对其正弦函数绘图图2.5 x轴为对数刻度的正弦函数图2.2 图形的控制plot命令除了接受x及y坐标外,还可接受一个字符串输入,用以控制曲线的颜色、格式及标志,其使用语法如下:plot(x,y,CLM)其中,C代表曲线的颜色(Colors),L代表曲线的格式(Line Styles),M代表曲线所用的标志(Markers)。举例来说,若要用黑色点线画出正弦波,并在每一数据点画上一个小菱形(如图2.6所示),可输入>>x=0:0.5:4*pi; %x向量的起始与结束元素为0及4, %0.5为各元素相差值(间隔为0.5)>>y=sin(x);>>p
31、lot(x,y,k:diamond) %其中“k”代表黑色,“:”代表点线, %而“diamond”则指定菱形为曲线的标志 图2.6 用黑色点线画出正弦波并在数据点画上小菱形表2.2、2.3、2.4分别给出了plot 命令的曲线格式、颜色选项与符号参考值。 表2.2 plot命令的曲线格式参考表plot命令曲线格式plot命令曲线格式实线(默认值):点线虚线.点划线 表2.3 plot命令的曲线颜色选项参考表Plot命令 曲线颜色RGB值b蓝色(Blue)(0,0,1)c青蓝色(Cyan)(0,1,1)g绿色(Green)(0,1,0)k黑色(Black)(0,0,0)m紫红色(Magenta
32、)(1,0,1)r红色(Red)(1,0,0)w白色(White)(1,1,1)y黄色(Yellow)(1,1,0) 表2.4 plot命令的曲线符号参考表plot命令曲线符号plot命令曲线符号o圆形>朝右三角形+十字形<朝左三角形×叉号square/s方形*星号diamond/d菱形.点号pentagram/p五角星形朝上三角形hexagram/h六角星形v朝下三角形none无符号(默认值)Hold命令用于保持当前图形。用plot命令绘图时,首先将当前图形窗口清屏,再绘制图形,所以我们只能见到最后一个plot命令绘制的图形。为了能利用多条plot命令绘制多幅图形,就需
33、要保持窗口上的图形。Hold命令为>>hold on %保持当前图形及轴系的所有特性>>hold off %解除hold on 命令例如>>x=0:0.2:12;>>plot(x,sin(x),-);>>hold on>>plot(x,1.5*cos(x),:)上例中使用了两条plot命令绘制出两条曲线,如图2.7所示。图2.7利用hold命令绘出的两条曲线2.3 图轴的控制一般而言,plot命令会根据所给的坐标点来自动决定图轴的范围,但是也可以使用axis命令来指定,其使用的语法为axis(xmin,xmax,ymin,
34、ymax)其中,xmin和xmax指定x轴的最小和最大值,ymin和ymax指定y轴的最小和最大值。例如,要画出正弦波在y轴介于0和1的部分(如图2.8所示),可输入图2.8 正弦波y轴介于0和1的部分>> x=0:0.1:4*pi; %x向量的起始和结束元素为0和4, %0.1为各元素相差值>> y=sin(x);>> plot(x,y);>> axis(-inf,inf,0,1); %画出正弦波y轴介于0和1的部分其中,-inf及inf并不是代表“无穷大”,而是代表最小值和最大值,因此上述axis命令等效于axis(min(x),max(x)
35、,0,1)MATLAB也可以指定图轴上的标刻点(Ticks)(如图2.9所示),例如>> x=0:0.1:4*pi;>> plot(x,sin(x)+sin(3*x)>> set(gca,'ytick',-1 -0.3 0.1 1)>> grid on %加上网格线 图2.9 制定图轴上的标刻点其中,grid on的功能即是加上网格线。此外,gca可返回目前使用中的图轴(gca是属于Handle Graphics的命令)。除了改变标刻点外,还可将标刻点的数字元改为文字(如图2.10所示),输入为 图2.10 将标刻点的数字元改为文
36、字>> x=0:0.1:4*pi;>> plot(x,sin(x)+sin(3*x)>> set(gca,'ytick',-1 -0.3 0.1 1)>> set(gca,'yticklabel','极小','临界值','崩溃值','极大')>> grid on如果要在一个窗口产生多个图形(即图轴),可再plot命令之前加上subplot,其一般形式为subplot(m,n,p),表示将窗口划分为m×n个区域,而下一个plot命令
37、则绘图于第p个区域,其中p的算法为由左至右,一行一行算起。例如,可以在一个窗口当中同时画出四个图(如图2.11所示),输入为 图2.11 在一个窗口中画出四个图形>> x=0:0.1:4*pi;>> subplot(2,2,1);plot(x,sin(x);>> subplot(2,2,2);plot(x,cos(x);>> subplot(2,2,3);plot(x,sin(x).*exp(-x/5);>> subplot(2,2,4);plot(x,x.2);2.4 加入文字说明 MATLAB可在图形或图轴加入说明文字,以增进整体
38、图形的可读性,详见表2.5。有关图轴的说明文字,可举例如下>> subplot(1,1,1);>> x=0:0.1:2*pi;>> y1=sin(x);>> y2=exp(-x);>> plot(x,y1,'-*',x,y2,':o');>> xlabel('t=0 to 2pi');>> ylabel('values of sin(t) and e-x');>> title('Funtion Plots of sin(t) a
39、nd e-x');>> legend('sin(t)','e-x');各命令执行的结果如图2.12所示。 表2.5 图形或图轴加入说明文字的命令命 令说 明title图形的标题xlablex轴的说明ylabley轴的说明zlablez轴的说明(适用于立体绘图)legend多条曲线的说明text在图形中加入文字gtext使用鼠标决定文字的位置图2.12 加入说明文字的各命令执行的结果其中,legend命令将会画出一小方块,包括每条曲线的说明。如果对legend方块位置不满意,可用鼠标单击拖放至合适的位置。此外,MATLAB将反斜线“”视为特殊符
40、号(如表2.6所示),因此可产生上标、下标、希腊字母、数学符号等效果,其遵循的规则如同一般LaTex或Tex的数学模式。若要在图形上面加上说明文字,可用text或gtext命令。text命令的使用语法为 text(x,y,string) 表2.6 特殊符号输入字母表示的特殊符号输入字母表示的特殊符号pileftarrowalpharightarrowbeta其中,x、y是说明文字的起始坐标位置,string则代表说明文字,例如 >> x=0:0.1:2*pi;>>plot(x,sin(x),x,cos(x);>>text(pi/4,sin(pi/4),
41、9;leftarrow sin(pi/4)=0.707');>>text(5*pi/4,cos(5*pi/4),'cos(5pi/4)=-0.707rightarrow',.'HorizontalAlignment','right');text命令的运算结果如图2.13所示。在上例中,“HorizontalAlignment”及“right”指示text命令将文字向右水平靠齐。gtext的使用语法为gtext(string),用鼠标在图上任意位置单击后,string即显示其上。需要注意的是,gtext只能用在二维平面绘图中。
42、图2.13 text命令的运行结果第三章控制工程基础实验线性系统分析与设计本实验是为配合控制基础的理论教学而设计的,共学时,分三次做完全部实验。在实验中,同学们首先要学习前两章的内容,了解MATLAB的基本特点,然后侧重于利用MATLAB对线性控制系统进行时域、频域和稳定性分析。3.1 概述控制系统的计算机辅助分析与设计作为一门专门的学科,一直受到控制界的普遍重视,在其发展过程中出现了各种各样的控制系统分析与设计软件或工具包。MATLAB控制工具箱则是众多工具中最为流行、使用最为广泛的系统分析与设计工具。MATLAB中含有极为丰富的专门用于控制系统分析与设计的函数,如复数运算、求特征值、方程求
43、根、矩阵求逆以及快速傅里叶变换等一些复杂的运算,在MATLAB中仅用一条函数便能实现。更为方便的是,MATLAB中的线性代数、矩阵运算和数值分析等功能为控制系统地分析与设计提供了可靠的基础和支持。MATLAB可以实现对线性系统的时域或频域分析、设计与建模,所利用的就是工具箱中的各种算法,而这些算法大部分都是M档,可以直接调用。MATLAB既可以处理连续的系统,也可以处理离散系统。根据控制系统描述方法的不同,如系统使用传递函数来表达,还是用状态空间来表达,可以选择经典的或现代的控制技术来处理。不仅如此,还可以利用MATLAB提供的函数来进行模型之间的转换。对于经典的控制系统分析中常用的方法,如时
44、间响应、频率响应、根轨迹等都能够很方便地进行计算并能以图形形式表达出来。当然也能很方便地利用其他一些函数来进行极点配置、最优控制与估计等方面的现代分析设计方法。当被控制对象的模型未知时,可以利用MATLAB辨识工具箱中提供的一些函数对被控对象进行辨识和建模,然后根据需要再选择各种系统分析和设计方法。另外,还可以利用MATLAB提供的s函数对一些非线性系统进行分析和设计。更为重要的是,可以编制自己的M档来任意添加工具箱中原来没有的工具函数。下面将重点介绍以传递函数描述的经典控制系统的分析方法。3.2 线性系统传递函数的描述对于单输入单输出(SISO)系统,其传递函数G(s)可以表示成关于s的多项
45、式分式的形式式中,nn和nd分别是传递函数分子和分母关于s多项式系数的个数。在MATLAB中,传递函数描述法是通过传递函数分子和分母关于s降序排列的多项式系数来表示的,并用向量num和den表示: num=num(1) num(2) num(nn) den=den(1) den(2) den(nd)对于单输入多输出(SIMO)系统,上述的num为矩阵,其行数与输出的y个数相同。例如,对于单输入多输出(SIMO)系统(两个输出),传递函数矩阵为只要在MATLAB命令窗口中键入如下代码,即可实现对上述系统的传递函数描述,即>>num=0 0 3 2;1 0 2 5; %或写成num=
46、3 2;1 0 2 5>>den=3 5 2 1;最好在分子多项式的前面用补零的方法使得传递函数分子多项式系数个数与分母多项式系数个数相同。得到num和den后,利用下面的语句就可以表示这个系统 sys=tf(num,den)其中,tf()代表以传递函数的形式描述系统。对于单输入单输出(SISO)系统,如>> num=0 0 3 2;>> den=3 5 2 1;>> sys=tf(num,den)Transfer function: 3 s + 2-3 s3 + 5 s2 + 2 s + 1对于单输入多输出(SIMO)系统,如>>
47、num=0 0 3 2 ;1 0 2 5num = 1x4 double 1x4 double>> den=3 5 2 1;>> sys=tf(num,den) %或写成tf(num,den) Transfer function from input to output. 3 s + 2 #1: - 3 s3 + 5 s2 + 2 s + 1 s3 + 2 s + 5 #2: - 3 s3 + 5 s2 + 2 s + 1或直接写成>> tf(0 0 3 2,1 0 2 5,3 5 2 1) Transfer function from input 1 to
48、 output: 3 s + 2-3 s3 + 5 s2 + 2 s + 1 Transfer function from input 2 to output: s3 + 2 s + 5-3 s3 + 5 s2 + 2 s + 1还可以用零极点形式描述这个系统在MATLAB中,用z,p,k矢量组表示,即z=z1,z2,zm;p=p1,p2,pn;k=k;用零极点形式来描述系统的语句为ss=zpk(sys)如上面的单输入单输出系统>> num=0 0 3 2;>> den=3 5 2 1;>> sys=tf(num,den);>> zpk(sys)
49、 Zero/pole/gain: (s+0.6667)-(s+1.356) (s2 + 0.3103s + 0.2458)而且传递函数形式和零极点形式之间可以相互转化,语句为z,p,k=tf2zp(num,den)num,den=zp2tf(z,p,k)其中,tf2zp函数是将系统的传递函数形式转换为零极点增益形式,而zp2f函数是将系统的零极点增益形式转换为传递函数形式。例如 >> num=0 0 3 2;>> den=3 5 2 1;>> z,p,k=tf2zp(num,den)z = -0.6667p = -1.3563 -0.1552 + 0.470
50、8i -0.1552 - 0.4708ik = 1当传递函数复杂时,应用多项式乘法函数conv()等实现。例如:den1=1,2,2den2=2,3,3,2den=conv(den1,den2)3.3 实验一 控制系统的时域分析一、实验目的1.掌握一阶、二阶线性系统的时域响应分析,包括单位阶跃响应、单位脉冲响应、单位斜坡响应。2.熟练使用MATLAB中用于线性控制系统时域响应分析的工具函数。二、预习要求1.一阶、二阶线性系统的时域响应分析。2.实验指导书中前两章内容。三、实验原理对控制系统来说,系统的数学模型实际上是某种微分方程或差分方程,因而在仿真过程中需要以某种数值算法从给定的初始值出发,
51、逐步计算每一个时刻系统的响应,即系统的总体时间响应,并绘制出系统的响应曲线,由此来分析系统的性能。时间响应主要是研究系统对输入和扰动在时域内的瞬态行为,一些系统的特征,如上升时间、过渡过程时间、超调量以及稳态误差等,都能从时间响应上反映出来。控制系统工具箱提供了丰富的、用于控制系统时间响应分析的工具函数。其中用于计算连续系统时域响应的主要函数见表3.1。其中单位阶跃响应函数step()的调用格式为y,x=step(sys) 或 y,x=step(sys,t) 或 y,x=step(num,den) 或 y,x=step(num,den,t)其中sys可以由tf()或zpk()函数得到,t为选定
52、的仿真时间向量,如果不加t,仿真时间范围自动选择。此函数只返回仿真数据而不在屏幕上画仿真图形,返回值y为系统在各个仿真时刻的输出所组成的矩阵,而x为自动选择的状态变量的时间响应数据。如果用户对具体的响应数值不感兴趣,而只想绘制出系统的阶跃响应曲线,则可以由如下的格式调用step(sys) 或 step(sys,t) 或 step(num,den) 或 step(num,den,t)表3.1 连续系统时域响应函数函 数功 能调用格式说 明impulse计算连续系统的单位脉冲响应impulse(num,den)得到对以传递函数描述的系统的脉冲响应曲线impulse(num,den,t)得到对以传递函数描述的系统的脉冲响应曲线,并可指定时间tstep 计算连续系统的单位阶跃响应step(num,den)得到对以传递函数描述的系统的阶跃响应曲线step(num,den,t)得到对
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 公司餐饮配送合同范例
- 网络文学IP有声剧改编授权合同
- 航空货运保险理赔及运输服务质量合同
- 质押担保条件变更与补充协议
- 海关关员岗位海关监管政策咨询聘用合同
- 高标准智能农业大棚遮阳网租赁与种植技术咨询合同
- 艺术院团专业演员长期聘用服务协议
- 污水处理厂委托运营及排放标准达标合同
- 新能源股权代持合同纠纷预防与处理机制合同
- 2025至2031年中国语音合成模块市场现状分析及前景预测报告
- 2024初级社会工作者职业资格笔试考试易错题带答案
- 手机媒体概论(自考14237)复习题库(含真题、典型题)
- 琴行老师劳动协议合同
- 2024年陕西省普通高中学业水平合格性考试历史试题(解析版)
- 垫付运输合同协议
- 2024年河北承德公开招聘社区工作者考试试题答案解析
- 以科技赋能医疗打造透明化的肿瘤疾病诊断平台
- 新疆维吾尔自治区和田地区2024-2025学年高三5月考试题语文试题试卷含解析
- 拉美文化学习通超星期末考试答案章节答案2024年
- 集装箱七点检查表
- 交直流与MATLAB仿真
评论
0/150
提交评论