系统建模与仿真-第8次课-第四章(1)

上传人:ji****72 文档编号:48556514 上传时间:2018-07-17 格式:PPT 页数:80 大小:1.41MB
返回 下载 相关 举报
系统建模与仿真-第8次课-第四章(1)_第1页
第1页 / 共80页
系统建模与仿真-第8次课-第四章(1)_第2页
第2页 / 共80页
系统建模与仿真-第8次课-第四章(1)_第3页
第3页 / 共80页
系统建模与仿真-第8次课-第四章(1)_第4页
第4页 / 共80页
系统建模与仿真-第8次课-第四章(1)_第5页
第5页 / 共80页
点击查看更多>>
资源描述

《系统建模与仿真-第8次课-第四章(1)》由会员分享,可在线阅读,更多相关《系统建模与仿真-第8次课-第四章(1)(80页珍藏版)》请在金锄头文库上搜索。

1、1第四章 MATLAB程序设计基础 CHAPTER 4 FOUNDATION OFMATLAB PROGRAMMING 1980年,美国,Cleve Moler博士, New Mexico 大学。 MATLAB是集可靠的数值运算、图像与图形显示及处理、高水平的图形界面、高级程序设计 语言接口(C、FORTRAN等)于一身的强有力的控制系统研究工具。2MATLAB的出现 70年代中期,Cleve Moler和他的同事开发了LINPACK和EISPACK的Fortran子程序库 70年代末期,Cleve Moler 在新墨西哥大学给学生开线性代数,为学生编写了接口程序,这程序取名为 MATLAB,

2、即MATrix LABoratory 1983年春天,工程师John Little与Moler、Steve Bangert一起开发了第二代专业版MATLAB 1984年MathWorks公司成立,MATLAB正式推向市场3Matlab的版本演化 Matlab 1.0 Pc matlab-matlab 386 Matlab3.5+simulink:1990 Matlab 4.0:simulink内嵌,1992 Matlab 5.0:全面的面向对象,1997 Matlab 5.15.3:simulink 3.0 Matlab 6.0:2000 Matlab 6.5:购并了MATRIX-x Matl

3、ab 7.0:2004 4Matlab的特点和学习方法 MATLAB是一种交互式的以矩阵为基础的系统计算平台,它用于科学和工程的计算与可视化。它的优点在于快速开发计算方法,而不在于计算速度。 做大量的练习,熟悉matlab的命令和函数 联系实际课题,在解决问题过程中加深体会 多看帮助文件,充分利用网络资源 会提问题,寻求大家的帮助5引言(Introduction) MATLAB在控制系统设计中的应用MATLAB在系统建模中的应用MATLAB在系统仿真中的应用6MATLAB在控制系统设计中的应用极点配置求取系统根轨迹鲁棒控制器设计求解Lyapunov方程求取闭环系统的特征值LQR设计Fuzzy控

4、制器设计7MATLAB在系统建模中的应用求取系统传递函数(矩阵)单位阶跃响应系统输出响应求系统状态空间模型连续系统的离散化数值分析与函数逼近神经网络建模求取幅频特性和相频特性8MATLAB在系统仿真中的应用微分方程组的求解Simulink工具功能强大的编程语言系统直观易懂 实时性强绘图功能随心所欲 得心应手Matlab及其应用9与控制相关的工具箱104.1 MATLAB的基本语句结构 (The Basic Grammatical Structure of MATLAB)4.1.1 基本语句 (Basic Statements)MATLAB 复数矩阵矩阵整体处理元素单独处理11MATLAB最基本

5、的赋值语句变量名列表 = 表达式变量名列表表达式的定义矩阵运算MATLAB的函数调用MATLAB语句的返回值12等号右边的表达式分号(;)结束逗号(,)或换行号()结束含义分号结束否则左边的变量结果将不在屏幕上显示出来左边的返回矩阵的内容全部显示出来13MATLAB调用函数一次返回多个结果(多个矩阵)一次返回1个结果(1个矩阵)等号左边由 括起来的矩阵列表14t, x=ode45(f,0 10,-2 2.3);举例tx时间列向量x1(t)、x2(t)两列向量构成的矩阵 ode45( )求解微分方程的函数f0,10-2 2.3右端函数的文件名仿真的时间区间初始状态向量15MATLAB环境下矩阵的

6、输入方式举例输入方式A=1,2,3; 4,5,6; 7,8,9MATLAB中的输出结果A = 1 2 3 4 5 67 8 916矩阵的输入同一行中的内容用逗号或空格 (一个或一个以上的空格)分隔采用分号或回车键表示换行如果某一行太长而写不下续行符(三个点号)17对矩阵的元素进行赋值A(2,3) = 100例:矩阵A的第j列的全部元素A(: , j)矩阵A的第i行的全部元素A(i , :)冒号表达式起始值起始值步距步距终止值终止值s1:s2:s3产生行向量18A(1:2, 2:4)对矩阵A取第1行和第2行, 并在第2列到第4列中的所有 元素构成的子矩阵A(2:3, 1:2:5)取原来矩阵A的第

7、2行和第3行, 且位于1,3,5列上的所有元素 构成的子矩阵19向量的输入一般矩阵输入的特殊情况举例v2=1;2;3;4v2=1, 2, 3, 4等 价列向量v1=1, 2, 3, 4v1=1 2 3 4等 价行向量20输出结果v1 =1 2 3 4v2 =1 2 3 421举例t = 0: 0.1: 10;t=1:10;t 表示一个行向量步距默认为122MATLAB表示标量的方式与其它计算机语言一样定义了两个最基本的复数常量i和jij如果i和j被重新赋值,则将保留新的值!23这种情况下,如果想把一个变量a赋成输入命令a=sqrt(-1)244.1.2 基本矩阵运算 (Basic Matrix

8、 Operation)矩阵A和B已经定义A+BA-BA*BAA*inv(A)An转置共轭 转置逆矩阵的开平方A0.525ABB/A表示两个矩阵的左除,即由 Gause消去法解线性方程 AX=B的解X,即X=A-1B。表示两个矩阵的右除, 即表示BA-1。26A =1 2 34 5 67 8 9B =3 2 16 5 49 8 7A*B =42 36 3096 81 66150 126 102A.*B =3 4 324 25 2463 64 63274.1.3 MATLAB的控制语句(The Control Statements of MATLAB) 条件转移语句循环语句MATLAB语言和其他

9、高级语 言一样284.1.3.1 MATLAB的循环语句结构 MATLAB循环语句for语句while语句29for 循环变量 = 表达式1: 表达式3: 表达式2循环语句组 end例4.1 用MATLAB语言求取 。 程序如下: sum=0; for i=1:1:100sum=sum+i; end30while语句结构while 条件式循环体语句组 endMATLAB语言提供的循环结构for和while是允许 多级嵌套的,而且它们之间也允许相互嵌套。k=1; sum=0; while (k=0 input( )函数用户给计算机输入一个参数一个字符 串显示如果在input( ) 函数调用时采

10、用了s选项, 则允许用户输 入一个字符串51举例A = input(Enter matrix A =);给出Enter matrix A =提示,然后等待用户从键 盘按照MATLAB的格式输入矩阵Asave 文件名 变量列表 其它选项把工作空间中的变 量保存到文件中不同的元素 之间只能用 空格来分隔52举例save mydat a b d把工作空间中的变 量a, b, d保存到文 件mydat.mat中去save mydat把整个工作空间中的所 有变量全部存入文件文件是二进制形式的, 得出的文件不可读!save mydat -ascii这样就可读了。53load 文件名从文件中把矩阵数据 调到

11、工作空间中来举例事先已经用其他软件编写了一个数据文 本文件,文件名为data.txt,其中有两 列数据。可以将此文件复制到MATLAB默认的文件夹work中Load ascii data.txtplot(data(:,1),data(:,2)绘制曲线544.2.4 MATLAB的帮助系统 (The Helping System of MATLAB) help 命令或函数名举例help plot3;寻求如何画3 维曲线的帮助554.2.4.1帮助的使用 help 命令:已知命令不知道用法 lookfor命令:知道命令的关键词 Matlab Help:命令查找,索引,说明书 Demo 有效的利用帮

12、助564.2.4.2 获得详尽的帮助信息1. 首先是MATLAB窗口中的help命令,它最常用、最快, 往往也是最有效的。给出关键字就能找到相应的说明。Help 命令简单易用,但是它要求准确给出关键字,如果记忆不准 ,就很难找到。这时就应该用第二种方案。 2. Help Desk:这是MATLAB的HTML格式的帮助文档,有着 很好的组织。可以在命令行键入helpdesk,进入“Matlab Help Desk”。Help Desk的搜索可以使用不完全关键字,这 样即使遇到记忆模糊的情况也可以很快查到。 3. 前面两种方法所得到的帮助信息常常是不够细致的,需要 用第三种途径来补充,这就是电子版

13、的使用手册。MATLAB 里包含了大量关于MATLAB安装、使用、编程以及各种工具 箱等的电子版手册,全部为PDF格式,具有搜索功能,因此也 可以在指定的手册中搜索关键字,使用非常方便。574.2.5 MATLAB的编程实例 (Programming Examples of MATLAB)例4.5 在汽轮机系统中,润滑油系统的油动力源 主要是主油泵,该油泵的出油压力与汽轮机转子的 转速有关,但两者成非线性关系。为了对润滑油系 统进行计算机仿真,有必要建立这种非线性关系的 数学模型,但是又很难得到其解析表达式。在这种 情况下,我们可以通过数据拟合的方法来近似建模 。根据发电厂的现场实测数据,可以

14、得到下表:581.312001.08001.980.70.20主油泵 出口压 力(MPa)30005001000转子转 速 (r/min)当转速超过3000r/min时,出口油压保持为1.98MPa。试用MATLAB的M函数,通过线性插值的方法建立 其数学模型,要求对03200r/min范围内的任意转速都 能求得相应的主油泵出口压力近似值。591维插值函数interp1()YI = interp1(X,Y,XI,method)其中的method表示插值方法,具体有如下方法:nearest - 最近邻域插值linear - 线性插值spline - 分段立方样条插值pchip - 保形分段立方插

15、值cubic - 同 pchip60此问题用MATLAB的M函数编写如下function p=oil_pre(n) n0=0, 100, 500, 800, 1200, 3000; p0=0, 0.2, 0.7, 1.0, 1.3, 1.98; if n3000 | n=3000p=interp1(n0,p0,n,linear); elsep=1.98; end61M函数function y=fname(x1,x2,xn) 函数体语句段;function y1,y2,ym=fname(x1,x2,xn) 函数体语句段;非执行文件function fname(x1,x2,xn) 函数体语句段;function =fname(x1,x2,xn) 函数体语句段;等价62再编写一个可执行的M文件来调用该函数,并画出 03200r/min范围内的油压特性曲线。63for k=1:1:3201n1=k-1;nn(k)=n1;p1=oil_pre(n1);pp(k)=p1;en

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号