450 likes | 762 Views
第十一章 MATLAB 简介. 本章介绍了 Matlab 的基本知识,并介绍了 Matlab6.0 中控制系统工具箱5.0的基本功能。. 11.1 Matlab 的特点. 11.1.1 数值计算与符号计算功能 数值计算功能 符号计算功能 强大的科学数据可视化能力 高层绘图指令实现默认的图形表现方式 底层绘图指令更改图形属性 符号函数的可视化. 11.2 Matlab 的基本功能. 11.2.1 Matlab 的编程环境 11.2.2 Matlab 的程序设计基础 11.2.2.1 Matlab 的基本语句结构
E N D
第十一章 MATLAB简介 本章介绍了Matlab的基本知识,并介绍了Matlab6.0中控制系统工具箱5.0的基本功能。
11.1 Matlab的特点 • 11.1.1 数值计算与符号计算功能 • 数值计算功能 • 符号计算功能 • 强大的科学数据可视化能力 • 高层绘图指令实现默认的图形表现方式 • 底层绘图指令更改图形属性 • 符号函数的可视化
11.2 Matlab的基本功能 • 11.2.1 Matlab的编程环境 • 11.2.2 Matlab的程序设计基础 • 11.2.2.1 Matlab的基本语句结构 • 11.2.2.2 Matlab的变量操作 • 11.2.2.3 Matlab的编程基础
11.2.1 Matlab的编程环境 Matlab既是一种语言,又是一种编程环境。Matlab提供了很多方便用户的工具,用于管理变量、输入输出数据以及生成和管理M文件。以下以Matlab 6.0简介之。 Matlab 6.0的界面是一个web浏览器形式的工作环境,如下图所示。
11.2.2 Matlab的程序设计基础 用户可在Matlab的命令窗口键入一个命令,也可以由它定义的语言在编辑器中编写应用程序,Matlab软件对此进行解释后,在Matlab环境下对它进行处理,最后返回结果 .
变量名列表=表达式 11.2.2.1 Matlab的基本语句结构 Matlab以复数矩阵作为最基本的运算单元,既可以对它进行整体处理,也可以对元素进行单独处理。 Matlab语言最基本的赋值语句结构为
11.2.2.2 Matlab的变量操作 1.向量 向量是matlab中的一个基本单位,向量的每一个元 素的运算包括 1)向量的创建; 2)向量的加减运算; 3)向量的乘除运算
(1)向量的创建 在matlab的命令窗口键入以下字符 a = [1 2 3 4 5 6 9 8 7] a = 1 2 3 4 5 6 9 8 7 希望得到元素从0到20,步距为2的一个向量,只需键入以下命令即可 t = [0:2:20] t = 2 4 6 8 10 12 14 16 18 20
(2)向量的加减运算 设a,b为同维向量,则c=a+b或c=a-b得到两个向量相加减的结果。 向量与常数的相加减为每个元素加减这个常数。例如: b = a + 2 得到 b = 3 4 5 6 7 8 11 10 9 c = a + b c = 4 6 8 10 12 14 20 18 16
(3)向量的乘除运算 a.向量的乘法运算 点积运算的运算符为 .*,其意义为两个向量的对应元素进行乘法运算,例如 a=[1 2], b=[3 4] 则c=a.*b=[3 8] ^ 为向量的乘方运算,例如 c=a.^2=[1 4] b.向量的除法运算
2.矩阵 输入矩阵时每一行元素有分号或者回车键分隔。例如: B = [1 2 3 4;5 6 7 8;9 10 11 12] B = 1 2 3 4 5 6 7 8 9 10 11 12
Matlab中矩阵的多种运算 D = B * C D = 30 70 110 70 174 278 110 278 446 (2)矩阵乘法: (1)矩阵转置运算: C = B' C = 1 5 9 2 6 10 3 7 11 4 8 12
(3)矩阵点乘 当两矩阵维数相同时,运算符.*的结果是两矩阵的对应元素相乘。 E = [1 2;3 4]; F = [2 3;4 5]; G = E .* F G = 2 6 12 20
(4)矩阵的乘方 矩阵为方阵时,可以进行矩阵的乘方运算,运算符为^ E^3 ans = 37 54 81 118 若仅是元素进行乘方运算,可用运算符.^ E.^3 ans = 1 8 27 64
( 5)矩阵的逆 矩阵逆利用函数inv计算,此时,要求矩阵 方阵且可逆。 X = inv(E) X = -2.0000 1.0000 1.5000 -0.5000 (6)矩阵元素的赋值与运算 Matlab允许用户对矩阵的单个元素进行赋值和操作,Matlab此时命令方式为 X(i,j)=变量名
(7)矩阵的特征值及特征多项式 a. 特征值利用函数eig来计算 eig(E) ans = -0.3723 5.3723 b.特征多项式利用函数poly来计算特征多项式的系数,此时,多项式系数以降幂形式排列。 p = poly(E) p = 1.0000 -5.0000 -2.0000
3. 多项式 (1)多项式的创建 例如: s4+3s3-15s2-2s+9 如果想将其输入到matlab中,只需按下列方式输入向量 x = [1 3 -15 -2 9] x = 1 3 -15 -2 9
(2)计算多项式的值 可利用函数“polyval”计算多项式的值。例如,多项式在s=2的值为 z = polyval([1 0 0 0 1],2) z = 17 ( 3)求多项式的根 若求以下多项式的根s4+3s3-15s2-2s+9 roots([1 3 -15 -2 9]) ans = -5.5745 2.5836 -0.7951 0.7860
(4)多项式的乘法和除法 a. 多项式的乘积可利用它们系数的卷积得到MATALB的函数conv可以实现。 b. 多项式的除法利用函数deconv可以返回两个多项式除法的结果和余数。 (5)多项式的加法 两个同阶多项式的相加,可用z=x+y。对于一般x和y不同维数的情况,可用自定义的函数polyadd完成。
11.2.2.3 Matlab的编程基础 Matlab的编程效率要比其它高级语言 Basic、Fortran、Pascal、C高,且易于维护。 包括有: a. M文件 b. 函数 c. 绘图
1. M文件 Matlab有两种常用的方式: 第一种方式,在命令窗口中直接键入命令,同时可看到运算结果. 第二种方式,指用户采用任何文字处理软件编写和修改一个ASCII码文件,其扩展名必须为.m。 2.函数 Matlab由包括许多标准函数,每个函数都完成某一特定功能的代码组成。 Matlab也允许用户编写自己所需的函数,其扩展名为.m,其中必须以关键字function开头.
3.绘图 希望绘制一个作为时间函数的正弦波的图像。首先产生一个时间向量,然后计算每一时刻的正弦值。 t=0:0.25:7; y = sin(t); plot(t,y)
“plot”命令的附加功能 (1 ) 绘制多条曲线 为了在一幅图上绘制多条曲线,可采用具有 多个自变量的plot命令 plot(X1,Y1,X2,Y2,…,Xn,Yn) ( 2 ) 给图形加网格线、标题,坐标标记 显示图形可以画出网格线,定出图形标题,并且标定x,y轴或z轴标记 ( 3 ) 在图形屏幕上书写文字 在图形屏幕的点(x,y)上书写文字,采用命令 text(x,y,’text’)
(4 ) 图形类型和颜色 Matlab的图形允许用户定义点、线的类型及其颜色,其命令行格式为 Plot(x,y,str) 例如: ‘y +’表示一个黄色的加号,而‘b--’表示一个蓝色的虚线。 (5)坐标轴的设定 在绘制图形时,Matlab允许手工设定坐标的范围。
11.3 Matlab控制系统工具箱简介 • 11.3.1 线性系统的数学模型 • 11.3.2 Matlab 控制系统工具箱函数介绍 • 11.3.3 使用Matlab符号运算工具箱进行Laplace 变换
11.3.1 线性系统的数学模型 (一)从传递函数到状态空间 [A, B, C, D]=tf2ss(num, den) 可以把传递函数形式表示的系统 变换成状态空间形式.
(二)从状态空间到传递函数 *若系统是单输入/单输出系统,则命令 [num, den]=ss2tf(A, B, C, D) 将给出传递函数Y(s)/U(s) *若系统是多输入/多输出系统,则命令 [num, den]=ss2tf(A, B, C, D, iu) 将计算出状态空间表达式
【例11-1】考虑两输入单输出系统的状态空间描述,试求传递函数Y(s)/U1(s)和Y(s)/U2(s) den = 1 3 2 [num, den]=ss2tf(A, B, C, D, 2) num = 0 0.0000 1.0000 den = 1 3 2 解: Matlab程序及运行结果 A=[0 1;-2 -3]; B=[1 0;0 1]; C=[1 0]; D=[0 0]; [num, den]=ss2tf(A, B, C, D, 1) num = 0 1.0000 3.0000
由Matlab输出,我们得到 (三) 传递函数的部分分式展开 行向量num和den表示传递函数的分子和分母的系数 num=[b(1) b(2) ... b(n)] den=[a(1) a(2) ... a(n)] [r, p, k]=residue(num, den) 将求出两个多项式B(s)和A(s)之比的部分分式展开 留数、极点和直接项。
B(s)/A(s)的部分分式由下式给出 【例11-2】试求以下传递函数的部分分式表达式 解:此时对应的num和den分别为 num=[2 5 3 6] den=[1 6 11 6] 相应的Matlab命令 [r, p, k]=residue(num, den) 运行结果如下
由此可得上述问题的解为 num=[2 5 3 6]; den=[1 6 11 6]; [r, p, k]=residue(num, den) r = -6.0000 -4.0000 3.0000 p = -3.0000 -2.0000 -1.0000 k =2
【例11-3】求下列连续状态空间模型 在采样周期Ts=0.05秒时的离散状态空间模型。 解:利用命令[G, H]=c2d(A, B, Ts),可以求得一个等效的 时间模型 : A=[0 1;-25 -4]; B=[0;1]; format long [G,H]=c2d(A,B,0.05) H = 0.00116466984723 0.04484704238264 G = 0.97088325381929 0.04484704238264 -1.12117605956599 0.79149508428874
由此可得等效离散时间状态空间模型为 11.3.4使用Matlab符号运算工具箱进行Laplace变换 本节主要介绍利用符号运算功能进行Laplace变换和逆变换。 在利用符号运算工具箱求解问题时,必须首先用syms命令来声明符号变量。如下所示: Syms a b t d e y
【例11-4 】求解函数 的Laplace变换。 解:相应的matlab运行结果如下: >> syms s t a b c >> laplace(exp(-b*t)*cos(a*t+c)) ans = ((s+b)*cos(c)-a*sin(c))/((s+b)^2+a^2) 即输出为 【例11-5】求函数 的拉氏反变换 解:matlab解为
>> syms s a b c d >> ilaplace((s+d)/((s+a)*(s+b)*(s+c))) ans = 1/(a-b)/(a-c)*exp(-a*t)*d-1/(a-b)/(a-c)*exp(-a*t)*a-1/(b-c)/(a-b)*exp(-b*t)*d +1/(b-c)/(a-b)*exp(-b*t)*b-1/(b-c)/(a-c)*exp(- c*t)*c+1/(b-c)/(a-c)*exp(-c*t)*d 转换成一般形式为
【例11-6】求函数 的拉氏反变换 解: matlab解为 >>ilaplace((s^3+7*s^2+24*s+24)/(s^4+10*s^3+35*s^2+50*s+24)) ans = 4*exp(-4*t)-6*exp(-3*t)+2*exp(-2*t)+exp(-t) 转换成一般形式为 下面两个例子在以前的低版本符号运算工具箱中,不能得到解析解,但使用matlab6时可以得到解析解。
【例11-7】求解函数 的拉氏反变换 >> L=ilaplace(a/(s^4+a^4)) L = 1/2*a*2^(1/2)/(a^4)^(3/4)*(sin(1/2*2^(1/2)*(a^4)^(1/4)*t)*cosh(1/2*2^(1/2)*(a^4)^(1/4)*t)-cos(1/2*2^(1/2)*(a^4)^(1/4)*t)*sinh(1/2*2^(1/2)*(a^4)^(1/4)*t)) 转换成一般形式为
【例11-8】求解函数 的拉氏反变换 解: Matlab的解为 >> L=ilaplace(a/(s^8+a^8)) L = 1/8*a/(a^8)^(7/8)*Sum(exp(1/8*i*pi*(2*k-1))*exp(-(a^8)^(1/8)*exp(1/8*i*pi*(2*k-1))*t),k = 1 .. 8) 转换成一般形式为
【例11-9】求解函数 的拉氏反变换。 解: Matlab解为 >> ilaplace(1/(s^5+2*s^4+3*s^3+4*s^2+5*s+6)) ans = sum(1/42*_alpha*(1+_alpha)*exp(_alpha*t),_alpha = RootOf(_Z^5+2*_Z^4+3*_Z^3+4*_Z^2+5*_Z+6)) 此时可利用求根函数,求出系统的极点。 >> roots([1,2,3,4,5,6]) ans = 0.5517 + 1.2533i 0.5517 - 1.2533i -1.4918 -0.8058 + 1.2229i -0.8058 - 1.2229i
其近似拉氏反变换可以写成 使用pfrac函数,可以得出系统的部分分式表达式,可得 到更为简洁的结果 [P,R,K]=pfrac(1,[1,2,3,4,5,6]) P = 0.0885 + 0.0000i -0.1521 3.1289 -0.0868 1.4997
R = -1.4918 -0.8058 + 1.2229i -0.8058 - 1.2229i 0.5517 + 1.2533i 0.5517 - 1.2533i 其结果的数学表达式为
函数pfrac源程序如下: function [R,P,K]=pfrac(G1,G2) G=tf(G1,G2); [R,P,K]=residue(G.num{1},G.den{1}); for i=1:length(R) if imag(P(i))>eps a=real(R(i)); b=imag(R(i)); R(i)=-2*sqrt(a^2+b^2); R(i+1)=atan2(-a,b); end end
本章小结 本章首先讨论了Matlab的特点,Matlab具有功能强大的数值计算功能,符号计算功能和科学数据可视化能力. 接着,本章以Matlab 6.0为例,介绍了Matlab的编程环境,Matlab6.0界面是一个web浏览器式的多窗口环境。用户可以方便地获得帮助,观看示例,查看变量,浏览历史命令等。 Matlab以向量为基本操作变量。接下来介绍了基本知识,包括基本语言操作,编程基础。最后介绍了Matlab6.0所包括的控制系统工具箱5.0的基本功能和常用函数,并简单介绍了基于matlab符号运算的Laplace变换。