山东大学 MATLAB课件ppt.rar
MATLAB程序设计基础程序设计基础山东大学控制科学与工程学院李晓磊MATLAB的发展历程 oMATLAB MATrix LABoratory o20世纪七十年代后期:时任美国新墨西哥大学计算机科学系主任的Cleve Moler教授用FORTRAN设计了一组程序接口,此即萌芽状态的MATLAB。o1984年成立了MathWorks公司,并把MATLAB正式推向市场。从这时起,MATLAB的内核采用C语言编写,而且除原有的数值计算能力外,还新增了数据图视功能。o进入20世纪九十年代的时候,MATLAB已经成为国际控制界公认的标准计算软件。主要版本o1993年推出MATLAB4.0版本(1)推出了SIMULINK。这是一个交互式操作的动态系统建模、仿真、分析集成环境。(2)开发了与外部进行直接数据交换的组件,打通了MATLAB进行实时数据分析、处理和硬件开发的道路。(3)推出了符号计算工具包。(4)Notebook 实现了MATLAB与Word的无缝连接。其升级版本MATLAB4.2c应用较广泛。o1997年,MATLAB5.0版问世,紧接着是5.1、5.2,以及和1999年春的5.3版,真正32位运算,功能强大,数值计算加快,拥有更丰富的数据类型和结构、更友善的面向对象、更加快速精良的图形可视、更广博的数学和数据分析资源、更多的应用开发工具。其中MATLAB5.3应用最广泛。o2001年推出了MATLAB6.0,随后MATLAB 6.5,其界面有较大的改观,计算速度有了比较大的改善,增加了与Java的接口。o2005年,MATLAB7.1针对编程环境、代码效率、数据可视化、数学计算、文件 I/O 等方面进行升级.o2006年3月,发布MATLAB R2006a,主要更新了10个产品模块、增加了多达350个新特性、增加了对64位Windows的支持,并新推出了.net工具箱MATLAB应用与网上资源o工具箱 信号处理、神经网络、鲁棒控制、系统辨识、控制系统、图形处理、模糊逻辑、小波分析、金融管理、概率统计、非线性控制等。o网络资源 MATLAB安装o硬件要求 x86:o软件要求 Windows:Linux:Adobe acrobat readerMATLAB程序执行方式o立即执行 3.5*6.2ans=21.7000 exp(j*3*pi/4)ans=-0.7071+0.7071i oM文件:纯文本文件,扩展名为M,用任何字处理软件都可以编辑修改。type exa1.m%This is an example.exp(j*3*pi/4)exa1ans=-0.7071+0.7071iMATLAB命令窗口o计算机安装好MATLAB之后,双击MATLAB图标,就可以进入命令窗口,此时意味着系统处于准备接受命令的状态,可以在命令窗口中直接输入命令语句。o通用命令 cd 显示或改变工作目录 hold 图形保持开关 dir 显示目录下的文件disp 显示变量或文字内容 type 显示文件内容path 显示搜索目录 clear 清理内存变量save 保存内存变量到指定文件 clf 清除图形窗口load 加载指定文件的变量 pack 收集内存碎片diary 日志文件 clc 清除工作窗quit 退出MATLAB echo 工作窗信息显示开关!调用dos命令o命令行键盘技巧 调用上一行home 光标置于当前行开头 调用下一行end 光标置于当前行末尾 光标左移一个字符esc 清除当前输入行 光标右移一个字符del 删除光标处的字符 Ctrl 光标左移一个单词backspace 删除光标前的字符 Ctrl 光标右移一个单词altbackspace 恢复上一次的删除o标点 :具有多种应用功能.小数点及域访问符 ;区分行,取消运行显示等 续行符 ,区分列,函数参数分隔符%注释标记 ()指定运算先后次序!调用操作系统运算 矩阵定义标志 赋值标记 用于构成单元数组 字符串标示符MATLAB搜索路径oMATLAB的一切操作都是在其搜索路径中进行的,如果调用的函数在搜索路径之外,系统将认为该函数不存在。o路径设置方法l1、通过对话框设置 在MATLAB主窗口菜单中【file】【set Path】选项。l2、path命令pathMATLABPATHE:MATLABworksE:MATLABtoolboxmatlabgeneralE:MATLABtoolboxmatlabopsE:MATLABtoolboxmatlablangE:MATLABtoolboxmatlabelmatE:MATLABtoolboxmatlabelfunE:MATLABtoolboxmatlabspecfunE:MATLABtoolboxmatlabmatfunE:MATLABtoolboxmatlabdatafunE:MATLABtoolboxmatlabpolyfun 2.1 path命令genpathans=E:MATLABtoolboxmatlabdatafun;E:MATLABtoolboxmatlabdatatypes;E:MATLABtoolboxmatlabdemos;E:MATLABtoolboxmatlabelfun;E:MATLABtoolboxmatlabelmat;E:MATLABtoolboxmatlabfunfun;E:MATLABtoolboxmatlabgeneral;E:MATLABtoolboxmatlabgraph2d;E:MATLABtoolboxmatlabgraph3d;E:MATLABtoolboxmatlabgraphics;E:MATLABtoolboxmatlabiofun;E:MATLABtoolboxmatlabiofunsrc;E:MATLABtoolboxmatlablang;E:MATLABtoolboxmatlabmatfun;2.2 genpath命令2.3 editpath或pathtool命令2.4 扩展搜索路径 将新目录扩展到搜索路径中 1、用path命令 path(path,e:matlabworks)2、用addpath命令 将新目录加到搜索路径的末尾 addpath e:matlabworks end 将新目录加到搜索路径的开始 addpath e:matlabworks-begin 3、使用路径设置对话框MATLAB帮助oMATLAB Help 完善的HTML格式联机帮助系统,非常全面。使用方法:1.从help菜单中选取;2.在命令窗口中执行helpdesk或doc。oPDF文档 用Adobe acrobat reader阅读。Help系列ohelpwinoHelphelpHELP topics:matlabgeneral -General purpose commands.matlabops -Operators and special characters.matlablang -Programming language constructs.matlabelmat -Elementary matrices and matrix manipulation.matlabelfun -Elementary math functions.matlabspecfun -Specialized math functions.matlabmatfun -Matrix functions-numerical linear algebra.matlabdatafun -Data analysis and Fourier transforms.For more help on directory/topic,type help topic.oHelp+函数(类)名help general General purpose commands.MATLAB Toolbox Version 5.2 18-Dec-1997 General information help -On-line help,display text at command line.helpwin -On-line help,separate window for navigation.helpdesk -Comprehensive hypertext documentation and troubleshooting.demo -Run demonstrations.ver -MATLAB,SIMULINK,and toolbox version information.See also PUNCT.help helpwin HELPWIN On-line help,separate window for navigation.HELPWIN TOPIC opens a help window and displays the help text for the given TOPIC.Links are created to functions referenced in the See Also line of the help text.HELPWIN(HELP_STR,TITLE)displays the string HELP_STR in the help window.HELP_STR may be passed in as a string with each line separated by carriage returns,a column vector cell array of strings with each cell (row)representing a line or as a string matrix with each row representing a line.The optional string TITLE will appear in the title edit box.HELPWIN(TITLE1 HELP_STR1;TITLE2 HELP_STR2;.,PAGE)displays one page of multi-page help text.The multi-page help text is passed in as a cell array of strings or cells containing TITLE and HELP_STR pairs.Each row of the multi-page help text cell array(dimensioned number of pages by 2)consists of a title string paired with a string,cell array or string matrix of help text.The second argument PAGE is a string which must match one of the TITLE entries in the multi-page help text.The matching TITLE represents the page that is to be displayed first.If no second argument is given,the first page is displayed.A third argument may be passed to HELPWIN which is a string that becomes the title of the help window figure.Additional arguments,after the window title,will be interpreted as Handle Graphics parameter-value pairs to be applied to the text displayed in the help window.Examples.helpwin plot helpwin(Help String,title)helpwin(Help text for sprintf(n)my m-file.,title)helpwin(Help String for;my m-file,title)helpwin(str,Topic 2,My Title)where,str=Topic 1 Help string for Topic 1;Topic 2 Help string for Topic 2;Topic 3 Help string for Topic 3 See also DOC,DOCOPT,HELP,WEB.oLookfor 根据用户提供的关键字搜索相关的函数。lookfor diffSETDIFF Set difference.DIFF Difference and approximate derivative.POLYDER Differentiate polynomial.ODE113 Solve non-stiff differential equations,variable order method.ODE15S Solve stiff differential equations,variable order method.ODE23 Solve non-stiff differential equations,low order method.ODE23S Solve stiff differential equations,low order method.o帮助机理lHelp命令显示相应M文件的注释区lLookfor命令搜索路径中每个M文件的第一行,扫描是否包含所要查询的字符串。help exa1 This is an example.o其他帮助命令lExist 变量检验函数lWhat 目录中文件列表lWho 内存变量列表lWhos 内存变量详细信息lWhich 确定文件位置联机演示系统o基本介绍 Introo演示 demo控制系统工具箱传递函数l单输入/单输出线性定常系统系统微分方程系统传递函数系统ZPK形式传递函数lMATLAB中创建传递函数(TF)对象创建两个行向量,按降阶顺序分别包含分子和分母多项式中s各次幂的系数使用tf命令建立TF对象 例如:numG=4 3;denG=1 6 5;G1=tf(numG,denG)或 G1=tf(4 3,1 5 6)传递函数l零点、极点、增益形式(ZPK)表示输入零点和极点列向量及标量形式的增益使用zpk命令建立ZPK对象 例:zG=-0.75;pG=-1;-5;kG=4;G2=zpk(zG,pG,kG)或者:G2=zpk(-0.75,-1;-5,4)传递函数两种形式互换lTF形式变换为ZPK形式 Gzpk=zpk(Gtf)zz,pp,kk=zpkdata(Gzpk,v)%获得G(s)的零点、极点和增益lZPK形式变换为TF形式Svv=tf(Sxx)nn,dd=tfdata(Svv,v)%获得分子分母多项式系数传递函数l传递函数零点、极点图形表示 pzmap O指示零点 X指示极点传递函数l例1:创建如下系统的TF对象,显示对象属性并提取分子分母多项式,以行向量显示,绘制极点-零点图l解:numG=4 36 32 denG=1 10 30 40 24 G=tf(numG,denG)get(G)nn,dd=tfdata(G,v)pzmap(G)传递函数l例2:使用例1中的系统,建立ZPK模型,提取零点、极点和增益,验证其与TF对象所得结果相同l解:n=4 36 32;d=1 10 30 40 24;G=tf(n,d)GG=zpk(G)zz,pp,kk=zpkdata(GG,v)z,p,k=zpkdata(G,v)留数与脉冲响应l留数 resG,polG,otherG=residue(numG,denG)resG留数 polG极点 otherG常数l脉冲响应 impulse(G)例:一个线性定常系统的传递函数是 写出G(s)的部分分式展开式,并绘制系统的脉冲响应。留数与脉冲响应l解:numG=3 2;denG2 4 5 1;G=tf(numG,denG)resG,polG,otherG=residue(numG,denG)Impule(G)传递函数的部分分式展开:resG=-0.1867-0.5526i -0.1867+0.5526i 0.3734 polG=-0.8796+1.1414i -0.8796-1.1414i -0.2408 otherG=系统的脉冲响应阶跃响应l 阶跃响应函数 step(G)lDC增益 dcgain(G)s=0处的增益,即分子多项式和分母多项式的常数项之比。l对给定传递函数G(s),增加一个s=0处的极点,再使用impulse命令,也可得到系统的阶跃响应。阶跃响应l例:numg=3 2;deng=2 4 5 1;numstep=numg;denstep=deng 0;gstep=tf(numstep,denstep)impulse(gstep,30)g=tf(numg,deng)step(g,30)dc_gain=dcgain(g)一般输入响应l响应函数 lsim help lsim LSIM(SYS,U,T)plots the time response of the LTI model SYS to the input signal described by U and T.The time vector T consists of regularly spaced time samples and U is a matrix with as many columns as inputs and whose i-th row specifies the input value at time T(i).For example,t=0:0.01:5;u=sin(t);lsim(sys,u,t)simulates the response of a single-input model SYS to the input u(t)=sin(t)during 5 seconds.一般输入响应l例:输入为如下分段函数:一般输入响应l源程序 g=tf(3 2,2 4 5 1);time=0:0.02:10;u=2.0*(1+0*(time);for ii=min(find(time=2.0):length(u)u(ii)=0.5 end y=lsim(g,u,time)plot(time,y,time,u,-)text(3.5,1.7,output)text(4.0,0.58,input)MATLAB在计算方法中的应用MATLAB入门到精通插值与拟合l插值与拟合来源于实际,又广泛应用于实际。随着计算机的不断发展及计算水平的不断提高,他们在国民生产和科学研究等方面扮演着越来越重要的角色。l插值法主要有Lagrange插值、分段线性插值、Hermite插值及三次样条插值等l拟合法主要有最小二乘法拟合和快速Fourier变换等Lagrange插值l对给定的n个插值节点及相应的函数值,利用n次Lagrange插值多项式对插值区间内任意x的函数值y可通过下式求得:MATLAB实现function y=lagrange(x0,y0,x)%lagrange insertn=length(x0);m=length(x);for i=1:m z=x(i);s=0.0;for k=1:n p=1.0;for j=1:n if j=k p=p*(z-x0(j)/(x0(k)-x0(j);end end s=p*y0(k)+s;end y(i)=s;end例:f(x)=lnxx0.40.50.60.70.8ln(x)-0.916291-0.693147-0.510826-0.357765-0.223144 x=0.4:0.1:0.8;y=-0.916291-0.693147-0.510826-0.356675-0.223144;lagrange(x,y,0.54)ans=-0.61614 log(0.54)ans=-0.61619Runge现象l19世纪Runge给出了一个等距节点插值多项式不收敛的例子:在区间-5,5上各阶导数存在,但在此区间上取n个节点构造的Lagrange插值多项式在全区间上不收敛。Runge现象l在区间-5,5上,取n=10,用lagrange插值法进行插值计算:x=-5:1:5;y=1./(1+x.2);x0=-5:0.1:5;y0=lagrange(x,y,x0);y1=1./(1+x0.2);plot(x0,y0,-r)hold on plot(x0,y1,-b)分段线性插值l分段线性插值就是通过插值点用折线段连接起来逼近原曲线。lMATLAB实现 interp1 一维插值yi=interp1(x,y,xi)%对一组节点(x,y)进行插值,计算插值点xi的函数值。yi=interp1(y,xi)%默认x=1:nyi=interp1(x,y,xi,method)%method为指定插值算法lnearest 线性最近项插值llinear 线性插值lspline 三次样条插值lcubic 三次插值同类的函数还有inter1q,interpft,spline,interp2,interp3,interpn等例:正弦曲线插值 x=0:0.1:10;y=sin(x);xi=0:.25:10;yi=interp1(x,y,xi);plot(x,y,o,xi,yi)例:Rouge现象的解决 x=-5:1:5;y=1./(1+x.2);x0=-5:0.1:5;y1=1./(1+x0.2);y2=interp1(x,y,x0);plot(x0,y0,-r)hold on plot(x0,y1,-b)plot(x0,y2,*m)Hermite插值l不少问题不但要求在节点上函数值相等,而且要求导数值也相等,甚至要求高阶导数也相等,可用Hermite插值多项式。l已知n个插值节点及其对应的函数值和一阶导数值,则计算插值区域内任意x的函数值y的Hermite插值公式为:MATLAB实现function y=hermite(x0,y0,y1,x)%hermite insertn=length(x0);m=length(x);for k=1:m yy=0.0;for i=1:n h=1.0;a=0.0;for j=1:n if j=i h=h*(x(k)-x0(j)/(x0(i)-x0(j)2;a=1/(x0(i)-x0(j)+a;end end yy=yy+h*(x0(i)-x(k)*(2*a*y0(i)-y1(i)+y0(i);end y(k)=yy;end例:根据如下给定数据,给出0.34处的值X0.300.320.35Sinx0.295520.314570.34290Cosx0.955340.949240.93937 x0=0.3 0.32 0.35;y0=0.29552 0.31457 0.34290;y1=0.95534 0.94924 0.93937;x=0.3:0.005:0.35;y=hermite(x0,y0,y1,0.34)y=0.33349 sin(0.34)ans=0.33349 y=hermite(x0,y0,y1,x);plot(x,y)hold on plot(x,sin(x),-r)三次样条插值l样条函数可以给出平滑的插值曲线和曲面。l方法介绍:设在a,b上给定n+1个点 a=x0 x1x2x=28 28.7 29 30;y=4.1 4.3 4.1 3.0;x0=28:0.15:30;y1=spline(x,y,x0);plot(x,y,-r)hold onplot(x0,y1)最小二乘法拟合l在科学实验的统计方法中,往往要从一组实验数据(xi,yi)中寻找出自变量x和因变量y之间的函数关系y=f(x)。l由于观测数据往往不够准确,因此并不要求y=f(x)经过所有的点(xi,yi),而只要求在给定点xi上误差ei=f(xi)-yi按照某种标准达到最小,通常采用欧氏范数|e|2作为误差度量的标准,这就是最小二乘法。MATLAB实现l利用polyfit函数进行多项式拟合POLYFIT Fit polynomial to data.POLYFIT(X,Y,N)finds the coefficients of a polynomial P(X)of degree N that fits the data,P(X(I)=Y(I),in a least-squares sense.P,S=POLYFIT(X,Y,N)returns the polynomial coefficients P and a structure S for use with POLYVAL to obtain error estimates on predictions.If the errors in the data,Y,are independent normal with constant variance,POLYVAL will produce error bounds which contain at least 50%of the predictions.The structure S contains the Cholesky factor of the Vandermonde matrix(R),the degrees of freedom(df),and the norm of the residuals(normr)as fields.l利用矩阵除法解决复杂型函数的拟合例:拟合以下数据x0.51.01.52.02.53.0y1.752.453.814.808.008.60?x=0.5 1.0 1.5 2.0 2.5 3.0;?y=1.75 2.45 3.81 4.80 8.00 8.60;?a=polyfit(x,y,2)a=0.4900 1.2501 0.8560?x1=0.5:0.05:3.0;?y1=a(3)+a(2)*x1+a(1)*x1.2;?plot(x,y,*)?hold on?plot(x1,y1,-r)例:根据经验公式y=a+bx2,拟合如下数据:xi1925313844yi19.032.349.073.398.8?x=19 25 31 38 44;?y=19.0 32.3 49.0 73.3 98.8;?x1=x.2;?x1=ones(5,1),x1;?ab=x1yab=0.5937 0.0506?x0=19:0.2:44;?y0=ab(1)+ab(2)*x0.2;?plot(x,y,o,x0,y0,-r)快速Fourier变换l在函数逼近中,当函数为周期函数时,用三角多项式逼近比用代数多项式更合适,因此引入Fourier逼近和快速Fourier变换。lMATLAB实现 fft 快速Fourier变换l fft(x)l fft(x,n)l fft(x,DIM)或 fft(x,n,DIM)fft2 二维快速Fourier变换l fft2(x)l fft2(x,MRows,NCols)fftn n维快速Fourier变换l fftn(x)l fftn(x,size)ifft 快速Fourier逆变换ifft2 二维快速Fourier逆变换ifftn n维快速Fourier逆变换积分与微分lNewton-Cotes系列数值求积将积分区间a,b划分为n等分,步长h=(b-a)/n,选取等距节点xk=a+kh,则求积分公式:Ck(n)由Cotes系数表给出。ln=0 时为矩形公式;ln=1时为梯形公式;ln=2时为Simpson公式;ln=3时为Cotes公式;ll矩形求积公式lCumsum 元素累积和函数Cumsum(x)对于向量x,函数返回一个向量,向量的第n个元素为向量x的前n个元素的和;对于矩阵X,函数返回一个矩阵,矩阵的列对应X的列的累积和返回值Cumsum(x,DIM)参数DIM指明求和从第DIM维开始。例:x=0 1 2;3 4 5;cumsum(x)ans=0 1 2 3 5 7l梯形求积分公式lZ=trapz(Y)用梯形方法计算Y的积分近似值。对向量Y,函数返回Y的积分;对矩阵Y,函数返回一个向量,向量各元素为矩阵Y对应列向量的积分值。lZ=trapz(X,Y)lZ=trapz(X,Y,DIM)lZ=trapz(Y,DIM)例:求积分?d=pi/1000;?t=0:d:3*pi;?nt=length(t);?y=fun(t);?sc=cumsum(y)*d;?scf=sc(nt)scf=0.901618619310013?z=trapz(y)*dz=0.900840276606884建立被积函数:Fun.mfunction y=fun(t)y=exp(-0.5*t).*sin(t+pi/6);自适应法-simpson法求积lQuadQ=quad(F,a,b)求函数F(x)从a到b的相对误差为1e-3的积分近似值;Q=quad(F,a,b,tol)向量tol给出相对误差和绝对误差;Q=quad(F,a,b,tol,TRACE)TRACE不为零时给出图形;例:求积分建立被积函数:fun1.mfunction f=fun1(x)f=x./(4+x.2);在MATLAB命令窗口中:?quad(fun1,0,1)ans=0.111572382538912自适应法-cotes法求积lQuad8Q=quad8(F,a,b)求函数F(x)从a到b的相对误差为1e-3的积分近似值;Q=quad8(F,a,b,tol)向量tol给出相对误差和绝对误差;Q=quad8(F,a,b,tol,TRACE)TRACE不为零时给出图形;例:求积分建立被积函数:fun2.mfunction f=fun2(x)f=exp(-x/2);在MATLAB命令窗口:?quad8(fun2,1,3,1e-10,1)ans=0.766800999128407符号积分lSymbolicToolBoxint(S)%计算符号表达式的不定积分;int(S,v)%计算符号表达式对自变量v的不定积分;int(S,a,b)%计算从a到b的定积分;int(S,v,a,b)%计算对变量v从a到b的定积分;符号积分?syms x t;?a=cos(x*t),sin(x*t);-sin(x*t),cos(x*t);?int(a,t)ans=1/x*sin(x*t),-cos(x*t)/x cos(x*t)/x,1/x*sin(x*t)?syms x1?int(x1*log(1+x1),0,1)ans=1/4微分和差分l数值微分和差分Diff(x)%对向量x,其值为 x(2)-x(1)x(3)-x(2)x(n)-x(n-1)Diff(X)%对矩阵X,其值为矩阵列的差分 x(2:n,:)-x(1:n-1,:)l符号微分和差分Diff(S)%对符号表达式S求微分Diff(S,v)%对自变量v求微分Diff(S,n)%n为正整数,对S求n次微分Diff(S,v,n)?x=sym(x);?diff(sin(x2)ans=2*cos(x2)*x?syms x?diff(sin(x2),2)ans=-4*sin(x2)*x2+2*cos(x2)l多元函数导数lJacobian(f,v)%计算对向量v的Jacobi矩阵例:?f2=3*x-cos(x*y)-0.5;x2-81*(y+0.1)2+sin(z)+1.06;exp(-x*y)+20*z+(10*pi/3-1);?jacobian(f2,x,y,z)ans=3+sin(x*y)*y,sin(x*y)*x,0 2*x,-162*y-16.2,cos(z)-y*exp(-x*y),-x*exp(-x*y),20控制系统的数学描述与建模控制系统的数学描述与建模MATLAB技术应用控制系统的数学描述与建模控制系统的数学描述与建模 q控制系统的数学模型在控制系统的研究中有着相当重要的地位,要对系统进行仿真处理,首先应当知道系统的数学模型,然后才可以对系统进行模拟。同样,如果知道了系统的模型,才可以在此基础上设计一个合适的控制器,使得系统响应达到预期的效果,从而符合工程实际的需要。q在线性系统理论中,一般常用的数学模型形式有:传递函数模型(系统的外部模型)、状态方程模型(系统的内部模型)、零极点增益模型和部分分式模型等。这些模型之间都有着内在的联系,可以相互进行转换。系统的分类l按系统性能分:线性系统和非线性系统;连续系统和离散系统;定常系统和时变系统;确定系统和不确定系统。线性连续系统:用线性微分方程式来描述,如果微分方程的系数为常数,则为定常系统;如果系数随时间而变化,则为时变系统。今后我们所讨论的系统主要以线性定常连续系统为主。线性定常离散系统:离散系统指系统的某处或多处的信号为脉冲序列或数码形式。这类系统用差分方程来描述。非线性系统:系统中有一个元部件的输入输出特性为非线性的系统。线性定常连续系统的微分方程模型l微分方程是控制系统模型的基础,一般来讲,利用机械学、电学、力学等物理规律,便可以得到控制系统的动态方程,这些方程对于线性定常连续系统而言是一种常系数的线性微分方程。l如果已知输入量及变量的初始条件,对微分方程进行求解,就可以得到系统输出量的表达式,并由此对系统进行性能分析。l通过拉氏变换和反变换,可以得到线性定常系统的解析解,这种方法通常只适用于常系数的线性微分方程,解析解是精确的,然而通常寻找解析解是困难的。MATLAB提供了ode23、ode45等微分方程的数值解法函数,不仅适用于线性定常系统,也适用于非线性及时变系统。电路图如图,R=1.4欧,L=2亨,C=0.32法,初始状态:电感电流为零,电容电压为0.5V,t=0时刻接入1V的电压,求0t numG=4 3;denG=1 6 5;G1=tf(numG,denG)或 G1=tf(4 3,1 5 6)零极点增益模型l零极点模型实际上是传递函数模型的另一种表现形式,其原理是分别对原系统传递函数的分子、分母进行分解因式处理,以获得系统的零点和极点的表示形式。v在MATLAB中零极点增益模型用z,p,K矢量组表示。即:vz=z1,z2,zmvp=p1,p2,.,pnvK=kv函数tf2zp()可以用来求传递函数的零极点和增益。K为系统增益,zi为零点,pj为极点零极点增益模型l零点、极点、增益形式(ZPK)表示输入零点和极点列向量及标量形式的增益使用zpk命令建立ZPK对象 例:zG=-0.75;pG=-1;-5;kG=4;G2=zpk(zG,pG,kG)或者:G2=zpk(-0.75,-1;-5,4)传递函数传递函数两种形式互换lTF形式变换为ZPK形式 Gzpk=zpk(Gtf)zz,pp,kk=zpkdata(Gzpk,v)%获得G(s)的零点、极点和增益lZPK形式变换为TF形式Svv=tf(Sxx)nn,dd=tfdata(Svv,v)%获得分子分母多项式系数部分分式展开l控制系统常用到并联系统,这时就要对系统函数进行分解,使其表现为一些基本控制单元的和的形式。lresG,polG,otherG=residue(numG,denG)resG留数 polG极点 otherG 常数函数r,p,k=residue(b,a)对两个多项式的比进行部分展开,以及把传函分解为微分单元的形式。l向量b和a是按s的降幂排列的多项式系数。部分分式展开后,余数返回到向量r,极点返回到列向量p,常数项返回到k。lb,a=residue(r,p,k)可以将部分分式转化为多项式比p(s)/q(s)。举例:传递
收藏
- 资源描述:
-
MATLAB程序设计基础程序设计基础山东大学控制科学与工程学院李晓磊MATLAB的发展历程 oMATLAB MATrix LABoratory o20世纪七十年代后期:时任美国新墨西哥大学计算机科学系主任的Cleve Moler教授用FORTRAN设计了一组程序接口,此即萌芽状态的MATLAB。o1984年成立了MathWorks公司,并把MATLAB正式推向市场。从这时起,MATLAB的内核采用C语言编写,而且除原有的数值计算能力外,还新增了数据图视功能。o进入20世纪九十年代的时候,MATLAB已经成为国际控制界公认的标准计算软件。主要版本o1993年推出MATLAB4.0版本(1)推出了SIMULINK。这是一个交互式操作的动态系统建模、仿真、分析集成环境。(2)开发了与外部进行直接数据交换的组件,打通了MATLAB进行实时数据分析、处理和硬件开发的道路。(3)推出了符号计算工具包。(4)Notebook 实现了MATLAB与Word的无缝连接。其升级版本MATLAB4.2c应用较广泛。o1997年,MATLAB5.0版问世,紧接着是5.1、5.2,以及和1999年春的5.3版,真正32位运算,功能强大,数值计算加快,拥有更丰富的数据类型和结构、更友善的面向对象、更加快速精良的图形可视、更广博的数学和数据分析资源、更多的应用开发工具。其中MATLAB5.3应用最广泛。o2001年推出了MATLAB6.0,随后MATLAB 6.5,其界面有较大的改观,计算速度有了比较大的改善,增加了与Java的接口。o2005年,MATLAB7.1针对编程环境、代码效率、数据可视化、数学计算、文件 I/O 等方面进行升级.o2006年3月,发布MATLAB R2006a,主要更新了10个产品模块、增加了多达350个新特性、增加了对64位Windows的支持,并新推出了.net工具箱MATLAB应用与网上资源o工具箱 信号处理、神经网络、鲁棒控制、系统辨识、控制系统、图形处理、模糊逻辑、小波分析、金融管理、概率统计、非线性控制等。o网络资源 MATLAB安装o硬件要求 x86:o软件要求 Windows:Linux:Adobe acrobat readerMATLAB程序执行方式o立即执行 3.5*6.2ans=21.7000 exp(j*3*pi/4)ans=-0.7071+0.7071i oM文件:纯文本文件,扩展名为M,用任何字处理软件都可以编辑修改。type exa1.m%This is an example.exp(j*3*pi/4)exa1ans=-0.7071+0.7071iMATLAB命令窗口o计算机安装好MATLAB之后,双击MATLAB图标,就可以进入命令窗口,此时意味着系统处于准备接受命令的状态,可以在命令窗口中直接输入命令语句。o通用命令 cd 显示或改变工作目录 hold 图形保持开关 dir 显示目录下的文件disp 显示变量或文字内容 type 显示文件内容path 显示搜索目录 clear 清理内存变量save 保存内存变量到指定文件 clf 清除图形窗口load 加载指定文件的变量 pack 收集内存碎片diary 日志文件 clc 清除工作窗quit 退出MATLAB echo 工作窗信息显示开关!调用dos命令o命令行键盘技巧 调用上一行home 光标置于当前行开头 调用下一行end 光标置于当前行末尾 光标左移一个字符esc 清除当前输入行 光标右移一个字符del 删除光标处的字符 Ctrl 光标左移一个单词backspace 删除光标前的字符 Ctrl 光标右移一个单词altbackspace 恢复上一次的删除o标点 :具有多种应用功能.小数点及域访问符 ;区分行,取消运行显示等 续行符 ,区分列,函数参数分隔符%注释标记 ()指定运算先后次序!调用操作系统运算 矩阵定义标志 赋值标记 用于构成单元数组 字符串标示符MATLAB搜索路径oMATLAB的一切操作都是在其搜索路径中进行的,如果调用的函数在搜索路径之外,系统将认为该函数不存在。o路径设置方法l1、通过对话框设置 在MATLAB主窗口菜单中【file】【set Path】选项。l2、path命令pathMATLABPATHE:MATLABworksE:MATLABtoolboxmatlabgeneralE:MATLABtoolboxmatlabopsE:MATLABtoolboxmatlablangE:MATLABtoolboxmatlabelmatE:MATLABtoolboxmatlabelfunE:MATLABtoolboxmatlabspecfunE:MATLABtoolboxmatlabmatfunE:MATLABtoolboxmatlabdatafunE:MATLABtoolboxmatlabpolyfun 2.1 path命令genpathans=E:MATLABtoolboxmatlabdatafun;E:MATLABtoolboxmatlabdatatypes;E:MATLABtoolboxmatlabdemos;E:MATLABtoolboxmatlabelfun;E:MATLABtoolboxmatlabelmat;E:MATLABtoolboxmatlabfunfun;E:MATLABtoolboxmatlabgeneral;E:MATLABtoolboxmatlabgraph2d;E:MATLABtoolboxmatlabgraph3d;E:MATLABtoolboxmatlabgraphics;E:MATLABtoolboxmatlabiofun;E:MATLABtoolboxmatlabiofunsrc;E:MATLABtoolboxmatlablang;E:MATLABtoolboxmatlabmatfun;2.2 genpath命令2.3 editpath或pathtool命令2.4 扩展搜索路径 将新目录扩展到搜索路径中 1、用path命令 path(path,e:matlabworks)2、用addpath命令 将新目录加到搜索路径的末尾 addpath e:matlabworks end 将新目录加到搜索路径的开始 addpath e:matlabworks-begin 3、使用路径设置对话框MATLAB帮助oMATLAB Help 完善的HTML格式联机帮助系统,非常全面。使用方法:1.从help菜单中选取;2.在命令窗口中执行helpdesk或doc。oPDF文档 用Adobe acrobat reader阅读。Help系列ohelpwinoHelphelpHELP topics:matlabgeneral -General purpose commands.matlabops -Operators and special characters.matlablang -Programming language constructs.matlabelmat -Elementary matrices and matrix manipulation.matlabelfun -Elementary math functions.matlabspecfun -Specialized math functions.matlabmatfun -Matrix functions-numerical linear algebra.matlabdatafun -Data analysis and Fourier transforms.For more help on directory/topic,type help topic.oHelp+函数(类)名help general General purpose commands.MATLAB Toolbox Version 5.2 18-Dec-1997 General information help -On-line help,display text at command line.helpwin -On-line help,separate window for navigation.helpdesk -Comprehensive hypertext documentation and troubleshooting.demo -Run demonstrations.ver -MATLAB,SIMULINK,and toolbox version information.See also PUNCT.help helpwin HELPWIN On-line help,separate window for navigation.HELPWIN TOPIC opens a help window and displays the help text for the given TOPIC.Links are created to functions referenced in the See Also line of the help text.HELPWIN(HELP_STR,TITLE)displays the string HELP_STR in the help window.HELP_STR may be passed in as a string with each line separated by carriage returns,a column vector cell array of strings with each cell (row)representing a line or as a string matrix with each row representing a line.The optional string TITLE will appear in the title edit box.HELPWIN(TITLE1 HELP_STR1;TITLE2 HELP_STR2;.,PAGE)displays one page of multi-page help text.The multi-page help text is passed in as a cell array of strings or cells containing TITLE and HELP_STR pairs.Each row of the multi-page help text cell array(dimensioned number of pages by 2)consists of a title string paired with a string,cell array or string matrix of help text.The second argument PAGE is a string which must match one of the TITLE entries in the multi-page help text.The matching TITLE represents the page that is to be displayed first.If no second argument is given,the first page is displayed.A third argument may be passed to HELPWIN which is a string that becomes the title of the help window figure.Additional arguments,after the window title,will be interpreted as Handle Graphics parameter-value pairs to be applied to the text displayed in the help window.Examples.helpwin plot helpwin(Help String,title)helpwin(Help text for sprintf(n)my m-file.,title)helpwin(Help String for;my m-file,title)helpwin(str,Topic 2,My Title)where,str=Topic 1 Help string for Topic 1;Topic 2 Help string for Topic 2;Topic 3 Help string for Topic 3 See also DOC,DOCOPT,HELP,WEB.oLookfor 根据用户提供的关键字搜索相关的函数。lookfor diffSETDIFF Set difference.DIFF Difference and approximate derivative.POLYDER Differentiate polynomial.ODE113 Solve non-stiff differential equations,variable order method.ODE15S Solve stiff differential equations,variable order method.ODE23 Solve non-stiff differential equations,low order method.ODE23S Solve stiff differential equations,low order method.o帮助机理lHelp命令显示相应M文件的注释区lLookfor命令搜索路径中每个M文件的第一行,扫描是否包含所要查询的字符串。help exa1 This is an example.o其他帮助命令lExist 变量检验函数lWhat 目录中文件列表lWho 内存变量列表lWhos 内存变量详细信息lWhich 确定文件位置联机演示系统o基本介绍 Introo演示 demo控制系统工具箱传递函数l单输入/单输出线性定常系统系统微分方程系统传递函数系统ZPK形式传递函数lMATLAB中创建传递函数(TF)对象创建两个行向量,按降阶顺序分别包含分子和分母多项式中s各次幂的系数使用tf命令建立TF对象 例如:numG=4 3;denG=1 6 5;G1=tf(numG,denG)或 G1=tf(4 3,1 5 6)传递函数l零点、极点、增益形式(ZPK)表示输入零点和极点列向量及标量形式的增益使用zpk命令建立ZPK对象 例:zG=-0.75;pG=-1;-5;kG=4;G2=zpk(zG,pG,kG)或者:G2=zpk(-0.75,-1;-5,4)传递函数两种形式互换lTF形式变换为ZPK形式 Gzpk=zpk(Gtf)zz,pp,kk=zpkdata(Gzpk,v)%获得G(s)的零点、极点和增益lZPK形式变换为TF形式Svv=tf(Sxx)nn,dd=tfdata(Svv,v)%获得分子分母多项式系数传递函数l传递函数零点、极点图形表示 pzmap O指示零点 X指示极点传递函数l例1:创建如下系统的TF对象,显示对象属性并提取分子分母多项式,以行向量显示,绘制极点-零点图l解:numG=4 36 32 denG=1 10 30 40 24 G=tf(numG,denG)get(G)nn,dd=tfdata(G,v)pzmap(G)传递函数l例2:使用例1中的系统,建立ZPK模型,提取零点、极点和增益,验证其与TF对象所得结果相同l解:n=4 36 32;d=1 10 30 40 24;G=tf(n,d)GG=zpk(G)zz,pp,kk=zpkdata(GG,v)z,p,k=zpkdata(G,v)留数与脉冲响应l留数 resG,polG,otherG=residue(numG,denG)resG留数 polG极点 otherG常数l脉冲响应 impulse(G)例:一个线性定常系统的传递函数是 写出G(s)的部分分式展开式,并绘制系统的脉冲响应。留数与脉冲响应l解:numG=3 2;denG2 4 5 1;G=tf(numG,denG)resG,polG,otherG=residue(numG,denG)Impule(G)传递函数的部分分式展开:resG=-0.1867-0.5526i -0.1867+0.5526i 0.3734 polG=-0.8796+1.1414i -0.8796-1.1414i -0.2408 otherG=系统的脉冲响应阶跃响应l 阶跃响应函数 step(G)lDC增益 dcgain(G)s=0处的增益,即分子多项式和分母多项式的常数项之比。l对给定传递函数G(s),增加一个s=0处的极点,再使用impulse命令,也可得到系统的阶跃响应。阶跃响应l例:numg=3 2;deng=2 4 5 1;numstep=numg;denstep=deng 0;gstep=tf(numstep,denstep)impulse(gstep,30)g=tf(numg,deng)step(g,30)dc_gain=dcgain(g)一般输入响应l响应函数 lsim help lsim LSIM(SYS,U,T)plots the time response of the LTI model SYS to the input signal described by U and T.The time vector T consists of regularly spaced time samples and U is a matrix with as many columns as inputs and whose i-th row specifies the input value at time T(i).For example,t=0:0.01:5;u=sin(t);lsim(sys,u,t)simulates the response of a single-input model SYS to the input u(t)=sin(t)during 5 seconds.一般输入响应l例:输入为如下分段函数:一般输入响应l源程序 g=tf(3 2,2 4 5 1);time=0:0.02:10;u=2.0*(1+0*(time);for ii=min(find(time=2.0):length(u)u(ii)=0.5 end y=lsim(g,u,time)plot(time,y,time,u,-)text(3.5,1.7,output)text(4.0,0.58,input)MATLAB在计算方法中的应用MATLAB入门到精通插值与拟合l插值与拟合来源于实际,又广泛应用于实际。随着计算机的不断发展及计算水平的不断提高,他们在国民生产和科学研究等方面扮演着越来越重要的角色。l插值法主要有Lagrange插值、分段线性插值、Hermite插值及三次样条插值等l拟合法主要有最小二乘法拟合和快速Fourier变换等Lagrange插值l对给定的n个插值节点及相应的函数值,利用n次Lagrange插值多项式对插值区间内任意x的函数值y可通过下式求得:MATLAB实现function y=lagrange(x0,y0,x)%lagrange insertn=length(x0);m=length(x);for i=1:m z=x(i);s=0.0;for k=1:n p=1.0;for j=1:n if j=k p=p*(z-x0(j)/(x0(k)-x0(j);end end s=p*y0(k)+s;end y(i)=s;end例:f(x)=lnxx0.40.50.60.70.8ln(x)-0.916291-0.693147-0.510826-0.357765-0.223144 x=0.4:0.1:0.8;y=-0.916291-0.693147-0.510826-0.356675-0.223144;lagrange(x,y,0.54)ans=-0.61614 log(0.54)ans=-0.61619Runge现象l19世纪Runge给出了一个等距节点插值多项式不收敛的例子:在区间-5,5上各阶导数存在,但在此区间上取n个节点构造的Lagrange插值多项式在全区间上不收敛。Runge现象l在区间-5,5上,取n=10,用lagrange插值法进行插值计算:x=-5:1:5;y=1./(1+x.2);x0=-5:0.1:5;y0=lagrange(x,y,x0);y1=1./(1+x0.2);plot(x0,y0,-r)hold on plot(x0,y1,-b)分段线性插值l分段线性插值就是通过插值点用折线段连接起来逼近原曲线。lMATLAB实现 interp1 一维插值yi=interp1(x,y,xi)%对一组节点(x,y)进行插值,计算插值点xi的函数值。yi=interp1(y,xi)%默认x=1:nyi=interp1(x,y,xi,method)%method为指定插值算法lnearest 线性最近项插值llinear 线性插值lspline 三次样条插值lcubic 三次插值同类的函数还有inter1q,interpft,spline,interp2,interp3,interpn等例:正弦曲线插值 x=0:0.1:10;y=sin(x);xi=0:.25:10;yi=interp1(x,y,xi);plot(x,y,o,xi,yi)例:Rouge现象的解决 x=-5:1:5;y=1./(1+x.2);x0=-5:0.1:5;y1=1./(1+x0.2);y2=interp1(x,y,x0);plot(x0,y0,-r)hold on plot(x0,y1,-b)plot(x0,y2,*m)Hermite插值l不少问题不但要求在节点上函数值相等,而且要求导数值也相等,甚至要求高阶导数也相等,可用Hermite插值多项式。l已知n个插值节点及其对应的函数值和一阶导数值,则计算插值区域内任意x的函数值y的Hermite插值公式为:MATLAB实现function y=hermite(x0,y0,y1,x)%hermite insertn=length(x0);m=length(x);for k=1:m yy=0.0;for i=1:n h=1.0;a=0.0;for j=1:n if j=i h=h*(x(k)-x0(j)/(x0(i)-x0(j)2;a=1/(x0(i)-x0(j)+a;end end yy=yy+h*(x0(i)-x(k)*(2*a*y0(i)-y1(i)+y0(i);end y(k)=yy;end例:根据如下给定数据,给出0.34处的值X0.300.320.35Sinx0.295520.314570.34290Cosx0.955340.949240.93937 x0=0.3 0.32 0.35;y0=0.29552 0.31457 0.34290;y1=0.95534 0.94924 0.93937;x=0.3:0.005:0.35;y=hermite(x0,y0,y1,0.34)y=0.33349 sin(0.34)ans=0.33349 y=hermite(x0,y0,y1,x);plot(x,y)hold on plot(x,sin(x),-r)三次样条插值l样条函数可以给出平滑的插值曲线和曲面。l方法介绍:设在a,b上给定n+1个点 a=x0 x1x2x=28 28.7 29 30;y=4.1 4.3 4.1 3.0;x0=28:0.15:30;y1=spline(x,y,x0);plot(x,y,-r)hold onplot(x0,y1)最小二乘法拟合l在科学实验的统计方法中,往往要从一组实验数据(xi,yi)中寻找出自变量x和因变量y之间的函数关系y=f(x)。l由于观测数据往往不够准确,因此并不要求y=f(x)经过所有的点(xi,yi),而只要求在给定点xi上误差ei=f(xi)-yi按照某种标准达到最小,通常采用欧氏范数|e|2作为误差度量的标准,这就是最小二乘法。MATLAB实现l利用polyfit函数进行多项式拟合POLYFIT Fit polynomial to data.POLYFIT(X,Y,N)finds the coefficients of a polynomial P(X)of degree N that fits the data,P(X(I)=Y(I),in a least-squares sense.P,S=POLYFIT(X,Y,N)returns the polynomial coefficients P and a structure S for use with POLYVAL to obtain error estimates on predictions.If the errors in the data,Y,are independent normal with constant variance,POLYVAL will produce error bounds which contain at least 50%of the predictions.The structure S contains the Cholesky factor of the Vandermonde matrix(R),the degrees of freedom(df),and the norm of the residuals(normr)as fields.l利用矩阵除法解决复杂型函数的拟合例:拟合以下数据x0.51.01.52.02.53.0y1.752.453.814.808.008.60?x=0.5 1.0 1.5 2.0 2.5 3.0;?y=1.75 2.45 3.81 4.80 8.00 8.60;?a=polyfit(x,y,2)a=0.4900 1.2501 0.8560?x1=0.5:0.05:3.0;?y1=a(3)+a(2)*x1+a(1)*x1.2;?plot(x,y,*)?hold on?plot(x1,y1,-r)例:根据经验公式y=a+bx2,拟合如下数据:xi1925313844yi19.032.349.073.398.8?x=19 25 31 38 44;?y=19.0 32.3 49.0 73.3 98.8;?x1=x.2;?x1=ones(5,1),x1;?ab=x1yab=0.5937 0.0506?x0=19:0.2:44;?y0=ab(1)+ab(2)*x0.2;?plot(x,y,o,x0,y0,-r)快速Fourier变换l在函数逼近中,当函数为周期函数时,用三角多项式逼近比用代数多项式更合适,因此引入Fourier逼近和快速Fourier变换。lMATLAB实现 fft 快速Fourier变换l fft(x)l fft(x,n)l fft(x,DIM)或 fft(x,n,DIM)fft2 二维快速Fourier变换l fft2(x)l fft2(x,MRows,NCols)fftn n维快速Fourier变换l fftn(x)l fftn(x,size)ifft 快速Fourier逆变换ifft2 二维快速Fourier逆变换ifftn n维快速Fourier逆变换积分与微分lNewton-Cotes系列数值求积将积分区间a,b划分为n等分,步长h=(b-a)/n,选取等距节点xk=a+kh,则求积分公式:Ck(n)由Cotes系数表给出。ln=0 时为矩形公式;ln=1时为梯形公式;ln=2时为Simpson公式;ln=3时为Cotes公式;ll矩形求积公式lCumsum 元素累积和函数Cumsum(x)对于向量x,函数返回一个向量,向量的第n个元素为向量x的前n个元素的和;对于矩阵X,函数返回一个矩阵,矩阵的列对应X的列的累积和返回值Cumsum(x,DIM)参数DIM指明求和从第DIM维开始。例:x=0 1 2;3 4 5;cumsum(x)ans=0 1 2 3 5 7l梯形求积分公式lZ=trapz(Y)用梯形方法计算Y的积分近似值。对向量Y,函数返回Y的积分;对矩阵Y,函数返回一个向量,向量各元素为矩阵Y对应列向量的积分值。lZ=trapz(X,Y)lZ=trapz(X,Y,DIM)lZ=trapz(Y,DIM)例:求积分?d=pi/1000;?t=0:d:3*pi;?nt=length(t);?y=fun(t);?sc=cumsum(y)*d;?scf=sc(nt)scf=0.901618619310013?z=trapz(y)*dz=0.900840276606884建立被积函数:Fun.mfunction y=fun(t)y=exp(-0.5*t).*sin(t+pi/6);自适应法-simpson法求积lQuadQ=quad(F,a,b)求函数F(x)从a到b的相对误差为1e-3的积分近似值;Q=quad(F,a,b,tol)向量tol给出相对误差和绝对误差;Q=quad(F,a,b,tol,TRACE)TRACE不为零时给出图形;例:求积分建立被积函数:fun1.mfunction f=fun1(x)f=x./(4+x.2);在MATLAB命令窗口中:?quad(fun1,0,1)ans=0.111572382538912自适应法-cotes法求积lQuad8Q=quad8(F,a,b)求函数F(x)从a到b的相对误差为1e-3的积分近似值;Q=quad8(F,a,b,tol)向量tol给出相对误差和绝对误差;Q=quad8(F,a,b,tol,TRACE)TRACE不为零时给出图形;例:求积分建立被积函数:fun2.mfunction f=fun2(x)f=exp(-x/2);在MATLAB命令窗口:?quad8(fun2,1,3,1e-10,1)ans=0.766800999128407符号积分lSymbolicToolBoxint(S)%计算符号表达式的不定积分;int(S,v)%计算符号表达式对自变量v的不定积分;int(S,a,b)%计算从a到b的定积分;int(S,v,a,b)%计算对变量v从a到b的定积分;符号积分?syms x t;?a=cos(x*t),sin(x*t);-sin(x*t),cos(x*t);?int(a,t)ans=1/x*sin(x*t),-cos(x*t)/x cos(x*t)/x,1/x*sin(x*t)?syms x1?int(x1*log(1+x1),0,1)ans=1/4微分和差分l数值微分和差分Diff(x)%对向量x,其值为 x(2)-x(1)x(3)-x(2)x(n)-x(n-1)Diff(X)%对矩阵X,其值为矩阵列的差分 x(2:n,:)-x(1:n-1,:)l符号微分和差分Diff(S)%对符号表达式S求微分Diff(S,v)%对自变量v求微分Diff(S,n)%n为正整数,对S求n次微分Diff(S,v,n)?x=sym(x);?diff(sin(x2)ans=2*cos(x2)*x?syms x?diff(sin(x2),2)ans=-4*sin(x2)*x2+2*cos(x2)l多元函数导数lJacobian(f,v)%计算对向量v的Jacobi矩阵例:?f2=3*x-cos(x*y)-0.5;x2-81*(y+0.1)2+sin(z)+1.06;exp(-x*y)+20*z+(10*pi/3-1);?jacobian(f2,x,y,z)ans=3+sin(x*y)*y,sin(x*y)*x,0 2*x,-162*y-16.2,cos(z)-y*exp(-x*y),-x*exp(-x*y),20控制系统的数学描述与建模控制系统的数学描述与建模MATLAB技术应用控制系统的数学描述与建模控制系统的数学描述与建模 q控制系统的数学模型在控制系统的研究中有着相当重要的地位,要对系统进行仿真处理,首先应当知道系统的数学模型,然后才可以对系统进行模拟。同样,如果知道了系统的模型,才可以在此基础上设计一个合适的控制器,使得系统响应达到预期的效果,从而符合工程实际的需要。q在线性系统理论中,一般常用的数学模型形式有:传递函数模型(系统的外部模型)、状态方程模型(系统的内部模型)、零极点增益模型和部分分式模型等。这些模型之间都有着内在的联系,可以相互进行转换。系统的分类l按系统性能分:线性系统和非线性系统;连续系统和离散系统;定常系统和时变系统;确定系统和不确定系统。线性连续系统:用线性微分方程式来描述,如果微分方程的系数为常数,则为定常系统;如果系数随时间而变化,则为时变系统。今后我们所讨论的系统主要以线性定常连续系统为主。线性定常离散系统:离散系统指系统的某处或多处的信号为脉冲序列或数码形式。这类系统用差分方程来描述。非线性系统:系统中有一个元部件的输入输出特性为非线性的系统。线性定常连续系统的微分方程模型l微分方程是控制系统模型的基础,一般来讲,利用机械学、电学、力学等物理规律,便可以得到控制系统的动态方程,这些方程对于线性定常连续系统而言是一种常系数的线性微分方程。l如果已知输入量及变量的初始条件,对微分方程进行求解,就可以得到系统输出量的表达式,并由此对系统进行性能分析。l通过拉氏变换和反变换,可以得到线性定常系统的解析解,这种方法通常只适用于常系数的线性微分方程,解析解是精确的,然而通常寻找解析解是困难的。MATLAB提供了ode23、ode45等微分方程的数值解法函数,不仅适用于线性定常系统,也适用于非线性及时变系统。电路图如图,R=1.4欧,L=2亨,C=0.32法,初始状态:电感电流为零,电容电压为0.5V,t=0时刻接入1V的电压,求0t numG=4 3;denG=1 6 5;G1=tf(numG,denG)或 G1=tf(4 3,1 5 6)零极点增益模型l零极点模型实际上是传递函数模型的另一种表现形式,其原理是分别对原系统传递函数的分子、分母进行分解因式处理,以获得系统的零点和极点的表示形式。v在MATLAB中零极点增益模型用z,p,K矢量组表示。即:vz=z1,z2,zmvp=p1,p2,.,pnvK=kv函数tf2zp()可以用来求传递函数的零极点和增益。K为系统增益,zi为零点,pj为极点零极点增益模型l零点、极点、增益形式(ZPK)表示输入零点和极点列向量及标量形式的增益使用zpk命令建立ZPK对象 例:zG=-0.75;pG=-1;-5;kG=4;G2=zpk(zG,pG,kG)或者:G2=zpk(-0.75,-1;-5,4)传递函数传递函数两种形式互换lTF形式变换为ZPK形式 Gzpk=zpk(Gtf)zz,pp,kk=zpkdata(Gzpk,v)%获得G(s)的零点、极点和增益lZPK形式变换为TF形式Svv=tf(Sxx)nn,dd=tfdata(Svv,v)%获得分子分母多项式系数部分分式展开l控制系统常用到并联系统,这时就要对系统函数进行分解,使其表现为一些基本控制单元的和的形式。lresG,polG,otherG=residue(numG,denG)resG留数 polG极点 otherG 常数函数r,p,k=residue(b,a)对两个多项式的比进行部分展开,以及把传函分解为微分单元的形式。l向量b和a是按s的降幂排列的多项式系数。部分分式展开后,余数返回到向量r,极点返回到列向量p,常数项返回到k。lb,a=residue(r,p,k)可以将部分分式转化为多项式比p(s)/q(s)。举例:传递
展开阅读全文