MATLAB语言及应用_第1页
MATLAB语言及应用_第2页
MATLAB语言及应用_第3页
MATLAB语言及应用_第4页
MATLAB语言及应用_第5页
已阅读5页,还剩91页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、王海英王海英参考教材参考教材:控制系统的控制系统的MATLAB与仿真与仿真,王海英,高等教育出版社,王海英,高等教育出版社系统建模与仿真系统建模与仿真,张晓华,清华大学出版社,张晓华,清华大学出版社主要内容MATLAB语言及应用系统建模系统仿真及应用第一部分第一部分MATLAB语言及应用语言及应用1.Matlab操作桌面操作桌面 命令窗口命令窗口 历史命令窗口历史命令窗口 当前目录浏览器当前目录浏览器 工作空间浏览器工作空间浏览器 M文件编辑器文件编辑器/调试器调试器 帮助导航帮助导航 2.MATLAB编程基础 变量变量 变量命名规则变量命名规则变量的定义变量的定义特殊变量特殊变量 变量名称变

2、量名称功能功能变量名称变量名称功能功能ans保存最后一次的运算结果pi圆周率realmax最大的浮点数值realmin最小的浮点数值i虚数单位j虚数单位inf正无穷大NaN非数(0/0,Inf/Inf)示例示例 基本数据类型基本数据类型 在MATLAB中共有六种数据类型六种数据类型,每一种类型可以是一维、二维和多维的。基本的数据类型是双精度型复数(double)和字符型(char)。 MATLAB以复数矩阵为基本的运算单元。 基本语句基本语句 MATLAB最基本的语句是赋值语句,其结构为:变量名列表变量名列表 = 表达式表达式其中等号左边的变量名列表为MATLAB语句的返回值,若一次返回多个结

3、果,则变量列表用 括起来,各变量间用逗号分隔;等号右边为表达式,可以是矩阵运算或函数调用。 关于程序编辑关于程序编辑 语句可以由语句可以由分号分号(;)、逗号、逗号(,)或者回车或者回车结束结束 如果用分号结束,则左边的变量结果不会被显示在命令窗口,否则将显示左侧变量的值。每行可以写多行语句,语句之间用空格、逗号、分号进每行可以写多行语句,语句之间用空格、逗号、分号进行分隔行分隔 用三个黑点表示“续行”,表示下一行是上一行的继续。A= 1, 2,3; 4, 5, 6;用用%表示注释,表示注释,%开始一直到行末的内容都是注释开始一直到行末的内容都是注释示例示例3.数据结构及其运算数据结构及其运算

4、数据类型数据类型举举 例例解解 释释doubledouble1,2;3,4,5+6i1,2;3,4,5+6i双精度数值类型,是最常用的类型。双精度数值类型,是最常用的类型。charcharHelloHello字符数组,每个字符占字符数组,每个字符占1616位。位。sparsesparsespeye(5)speye(5)双精度稀疏矩阵,只存储矩阵中的非双精度稀疏矩阵,只存储矩阵中的非0 0元素元素cellcell1,2,3;4,5,6;7,8,1,2,3;4,5,6;7,8,9,hello,eye9,hello,eye(2)(2)细胞数组,数组中的每个元素可为不同类细胞数组,数组中的每个元素可为

5、不同类型、不同维的数据。型、不同维的数据。structstructa.daya.day=12;=12;a.colora.color= =redreda.mata.mat=magic(3)=magic(3)结构数组相当于数据库的记录,把相关的结构数组相当于数据库的记录,把相关的数据列在一起,称为属性,不同属性的数据列在一起,称为属性,不同属性的数据类型可以不同数据类型可以不同storagestorageunit8(magic(3)unit8(magic(3)8 8位型,为无符号整数,最大可表示位型,为无符号整数,最大可表示255,255,不不能进行数学运算。能进行数学运算。双精度型(双精度型(d

6、ouble)、字符型()、字符型(char)、稀疏型()、稀疏型(sparse)、存储型)、存储型(storage)、细胞型()、细胞型(cell)和结构型()和结构型(struct)。)。 数据类型数据类型 一维数组 一维数组的创建一维数组的创建 逐个元素输入法冒号运算符法 一维数组的访问一维数组的访问 一维数组的访问遵循以下约定:用下标方式访问数组元素,下标要用一对圆括号( )引起来。下标代表的是元素在数组中的位置序号,从1开始,最大值为数组中元素的个数。下标可以是常量,也可以是变量。可以访问数组中的单个元素,也可以访问数组中的某些元素,即数组的子数组。 示例示例例例3.1二维数组 二维数

7、组的建立二维数组的建立 逐个输入数组元素值 如果数组内元素数量少,可以直接从键盘逐个输入元素的值,需要遵循的规则是:整个数组必须用中括号“ ”括起来数组的行与行之间用分号“;”分隔,或者用回车符分隔每行之间的元素必须用逗号“,”或者空格分隔 利用M文件 如果数组元素很多,或者元素值要经常改变,我们可以采用M文件来输入和保存数组。例例3.2例例3.3(mydata.m) 二维数组的访问二维数组的访问二维数组的访问遵循以下约定:用下标方式访问数组元素,下标要用一对圆形括号( )引起来。可以用双下标方式访问数组元素,格式为(r,c),其中r为二维数组的行下标,c为二维数组的列下标,下标之间用逗号分隔

8、。可以用单下标方式访问二维数组,二维数组的单下标是按照列优先规则排序的,即二维数组被看作是从第一列开始从左到右依次将各列首位连接而成的一维数组,单下标表示元素在这个一维数组中的位置。单下标和双下标具有对应关系可以访问二维数组的某个元素及其子数组,可以对元素和子数组赋值。例例3.4数组操作 标准数组的生成标准数组的生成 数组操作数组操作 数组运算 数组运算符数组运算符 数组运算函数数组运算函数 矩阵运算 矩阵运算符矩阵运算符 矩阵函数矩阵函数 例例3.5例例3.6例例3.8 ones功能:生成全1数组,即数组中的元素都为1。 格式:Y=ones(n)%生成nn的全1矩阵Y=ones(m1,m2,

9、mk) %生成m1m2mk的全1数组 Y=ones(size(A) %生成和数组A同样尺寸的全1数组 zeros功能:生成全0数组,即数组中的元素都为0。格式:同ones函数 rand功能:生成均匀分布随机数组。格式:Y=sand(state,v) %设置随机发生器的初始状态为v,其他同ones函数 randn 功能:产生正态分布随机数组。格式:同rand函数常用的标准数组 magic功能:产生魔方矩阵,不适用于高维数组。格式:M=magic(n)说明:说明:产生nn的魔方矩阵 eye功能:产生单位矩阵,即主对角线元素都为1而其他元素都为0的二维数组格式:Y=eye(n), Y=eye(n,m

10、), Y=eys(size(A) Diag功能:产生对角阵,即矩阵的某个对角线元素不全为0,其他元素为0。格式:X = diag(v,k)说明:说明:v为行向量,表示对角线元素。返回返回常用的数组运算符 A+B 数组加法运算 A-B 数组减法运算 A.*B数组相乘,A和B相同位置元素的乘积 A./B 数组相除,A和B相同位置元素相除 A.p数组各元素求p次幂 A#BA、B数组对应元素间进行关系运算 ABA、B数组对应元素间进行逻辑运算 A.数组转置,非共轭转置 sA标量s与数组A运算返回返回常用的数组运算函数三角函数sin,cos,asin,asinh,asec,sect,tan,atan指数

11、对数函数:exp指数函数log自然对数函数log10以10为底的对数函数log2以2为底的对数函数pow22的幂函数sqrt平方根函数复数函数abs绝对值,模angle相角(弧度)imag复数的虚部real复数的实部conj复数的共轭取整函数ceil向+方向取整fix向0方向取整floor向-方向取整round向最近的整数取整常用的矩阵运算 A+B矩阵加法 A-B矩阵减法 A*B矩阵乘法 A/B矩阵右除,求xB=A的最小二乘解 AB矩阵左除,求Bx=A的最小二乘解 Ap矩阵乘方 s*A标量s与矩阵A相乘 expm(A)矩阵的指数函数 logm(A)矩阵的对数函数 sqrtm(A)矩阵的平方根函

12、数 inv(A)矩阵的逆矩阵返回返回多项式 多项式的创建多项式的创建 多项式的运算多项式的运算 运算符 关系运算符关系运算符 逻辑运算符逻辑运算符 逻辑函数逻辑函数 算术运算符算术运算符 关系运算符关系运算符 小于大于=大于等于= =等于!=不等于逻辑运算符逻辑运算符& 逻辑与| 逻辑或 逻辑非示例示例例例3.9例例3.10例例3.11例例3.12多项式常用运算多项式加减:+ - %运算符 + - 实现多项式的加减法多项式相乘: p=conv(p1,p2) %p为多项式p1和多项式p2的乘积多项式相除:q,r=deconv(p1,p2) %多项式p1除以多项式p2,商多项式为q,余多项

13、式为r多项式求导:dp=polyder(p)%多项式p的导数多项式为dp dp=polyder(p1,p2) %多项式p1和p2乘积的导数多项式为dp num,den=polyder(p1,p2) % 有理分式(p1/p2)的求导后的有理分式为(num/den)多项式求值:pA=polyval(p,A) %多项式p在自变量为A时的值多项式求根:r=roots(p)多项式拟合:p=polyfit(x,y,n)矩阵的特征多项式:p=poly(A) %多项式p为矩阵A的特征多项式返回返回常用逻辑函数 any(v) 向量v中有非0元素,结果为1,否则为0;结果是行向量 all(v) 向量v中都是非0元

14、素,结果为1。结果是行向量 isequal(A,B)判断是否相等,数组运算 ismember(A,B)A的元素是B中的元素,则A相应位置的结果为1,否则为0 判断特殊数据的逻辑函数isempty isfinite isinf isletter isnan isprime isreal isspace 判断数据类型的逻辑函数iscell ischar iscellstr isfield isglobal ishandle islogicalisnumeric isobject issparse isstruct返回返回4.数据的可视化 图形窗口创建图形窗口创建Figure%创建新的图形窗口,并将

15、新创建的窗口作为当创建新的图形窗口,并将新创建的窗口作为当前绘图窗口。前绘图窗口。subplot(m,n,p) %将当前图形窗口分为将当前图形窗口分为m行行n列个子窗口,并指列个子窗口,并指定第定第p个子窗口为当前的绘图子窗口。子窗口个子窗口为当前的绘图子窗口。子窗口序号序号p是是按照行优先按照行优先的次序排列的。的次序排列的。例例4.1二维图形二维图形 基本二维绘图函数基本二维绘图函数 plot(y)plot(x,y)plot(x1,y1,x2,y2,) 绘图属性控制绘图属性控制 plot(x, y, color_linestyle_marker) 参数参数color_linestyle_m

16、arker 为由颜色、线型、为由颜色、线型、数据点等组成的字符串数据点等组成的字符串 绘图窗口的属性控制绘图窗口的属性控制 例例4.3例例4.2例例4.4例例4.5颜色字符定义表颜色字符定义表字符定义字符定义颜色颜色字符定义字符定义颜色颜色y yyellowyellow(黄)(黄)m mmagentamagenta(洋红)(洋红)c ccyancyan(青)(青)r rredred(红)(红)g ggreengreen(绿)(绿)b bblueblue(兰)默认(兰)默认w wwhitewhite(白)(白)k kblackblack(黑)(黑)线型字符定义表线型字符定义表字符定义字符定义线型

17、线型字符定义字符定义线型线型- -实线(默认)实线(默认)-虚线虚线: :点划线点划线-.-.点连线点连线nonenone无线无线 数据点标记字符定义表数据点标记字符定义表字符定义字符定义数据点标记数据点标记字符定义字符定义颜色颜色+ +加号加号 反勾号反勾号v v勾号勾号 大于号大于号 小于号小于号o o小圆圈小圆圈* *星号星号. .小黑点小黑点x x叉号叉号pentagram pentagram 五角星五角星square square 小正方形小正方形hexagram hexagram 六角星六角星diamonddiamond菱形菱形nonenone无标记无标记常用二维图形绘制函数表常用

18、二维图形绘制函数表绘制函数绘制函数意义意义调用格式调用格式bar( )bar( )条形图条形图bar(x,ybar(x,y) )compass( )compass( )罗盘图罗盘图compass(x,ycompass(x,y) )contour( )contour( )等高线图等高线图contour(x,y,zcontour(x,y,z) )errorbarerrorbar( )( )误差限图误差限图errorbar(x,y,l,u)errorbar(x,y,l,u)histhist( )( )直方图直方图hist(x,yhist(x,y) )stairs( )stairs( )阶梯图阶梯图s

19、tairs(x,ystairs(x,y) )pie( )pie( )饼图饼图pie(ypie(y) )polar( )polar( )极坐标图极坐标图polar(x,ypolar(x,y) )loglogloglog( )( )对数图对数图loglog(x,yloglog(x,y) )semilogxsemilogx( )( )semilogysemilogy( )( )半对数图半对数图semilogx(x,ysemilogx(x,y) )semilogy(x,ysemilogy(x,y) )例例4.6三维图形三维图形基本三维图形的绘制基本三维图形的绘制plot3(X,Y,Z, s) 三维网线

20、图三维网线图 mesh(X,Y,Z) 曲面图曲面图surf(X,Y,Z,C)函数绘图函数绘图 一元函数绘图一元函数绘图ezplot(F,xmin,ymin)二元函数绘图二元函数绘图ezsurf(F, domain,ngrid)%在指定矩形区域上,用指定格点数画二元函数曲面在指定矩形区域上,用指定格点数画二元函数曲面ezsurf(F, domain, circ)%在极坐标中绘制二元函数曲面在极坐标中绘制二元函数曲面( )sin( )( )cos( )( )x tty ttz tt06t 例4.7设某参数方程组为试绘制由变量x,y,z确定的三维曲线。 例例4.722zxy 8,8, 8,8xy 例

21、4.8 绘制函数在自变量取范围内的网线图和曲面图。例例4.8例4.9 绘制球面,锥面等图形例例4.9例4.10 绘制0.4( )1 1.5sin(0.6)ty tet 在0t YU2 - Y(E)YAssignmentf(z)zSolvef(z) = 0Algebraic ConstraintAdd|u|Abs例例8-18-1:已知单位负反馈二阶系统的开环传递函数为试绘制单位阶跃响应的实验结构图。sssG47. 410)(210s +4.47s2Transfer FcnStepScope模块的操作模块的操作 模块的选取模块的复制、剪切、删除、移动 模块的连接 模块参数的设置 模块的外形的调整

22、1.1.改变模块的大小改变模块的大小 2.2.调整模块的方向调整模块的方向 3.3.给模块加阴影给模块加阴影 模块名的处理 1.1.模块名的显示与消隐模块名的显示与消隐 2.2.修改模块名修改模块名例例8-28-2:对例8-1的结构图进行模块处理 相加器示波器单位阶跃信号10s +4.47s2传递函数二、系统仿真及参数设置二、系统仿真及参数设置 算法设置(算法设置(SolverSolver)设置起始时间和终止时间(设置起始时间和终止时间(Simulation timeSimulation time)算法设置算法设置(Solver option) (Solver option) v算法类型设置算

23、法类型设置v仿真算法设置仿真算法设置 设置输出选项设置输出选项 变步长解法变步长解法 定步长解法定步长解法 工作空间设置(工作空间设置(Workspace I/OWorkspace I/O) 从工作空间读入数据(从工作空间读入数据(Load from workspace Load from workspace )保存数据到工作空间保存数据到工作空间(Save to workspace)(Save to workspace)初始化状态模块初始化状态模块SIMULINK子系统 在已有的系统模型中建立子系统在已有的系统模型中建立子系统在已有的系统模型中新建子系统在已有的系统模型中新建子系统子系统应用

24、子系统应用 触发子系统:触发子系统:在控制信号满足某种变化要求的瞬间可以触发(激活)子系统,然后保持子系统的输出状态,等待下一个触发信号,它允许用户自己设置在控制信号的上升沿、下降沿或控制信号变化时触发子系统。使能子系统:使能子系统:控制信号分成“允许”和“禁止”两种,在允许信号控制下,可以执行子系统中的模块,否则将禁止其功能。为保证整个系统的连贯性,在禁止状态下子系统仍然有输出信号,用户可以选择继续保持禁止前的信号,或复位子系统,强制使其输出零信号。使能触发子系统:使能触发子系统:在使能状态下被触发时将激活该子系统,否则将禁止子系统。封装子系统:封装子系统:将完成特定功能的相关模块集合到一起

25、,对其中经常要设置的参数设置为变量,然后封装,使得其中变量可以在封装系统的参数设置对话框中统一进行设置。例例8.3例例8.4图标编辑选项卡图标编辑选项卡(Icon)参数设置选项卡(参数设置选项卡(Parameters)初始化设置选项卡(初始化设置选项卡(Initialization)文档编辑选项卡(文档编辑选项卡(Documentation) 例例8.4 S函数的建立函数的建立S函数就是S-Functions,是System-Functions的缩写。当MATLAB所提供的模型不能完全满足要求时,就可以通过S函数提供给用户自己编写程序来满足自己要求模型的接口。S函数使用有固定格式,只能用于基于

26、Simulink的仿真,并不能将其转换成独立于MATLAB的程序。S函数功能非常全面,适用于连续、离散以及混合系统。MATLAB提供了编写S函数的模板文件,该模板文件位于MATLAB根目录toolboxSimulinkblocks下,文件名为sfunmpl.m,该文件给出了S函数完整的框架结构,包含一个主函数和若干子函数,每一个子函数都对应于一个flag值,用户还可以根据编程需要加以修正。 S函数的格式为:Function sys,x0,str,ts=sfun(t,x,u,flag,p1,p2,)其中sfun是S函数的函数名,t,x,u分别为时间、状态和输入信号,flag为标志位,p1,p2为

27、参数。Flag值仿真过程调用的子函数功能0初始化mdlInitializeSize()对连续/离散状态变量个数、输入和输出的路数、采样周数个数和值以及状态变量初值x0等进行初始设置。1连续状态变量更新mdlDerivatives ()计算连续状态变量的微分方程并由sys变量返回2离散状态状态更新mdlUpdate()更新离散状态变量并由sys变量返回3计算输出mdlOutputs()计算输出信号由sys变量返回4计算下一仿真时刻mdlGetTimeNextVarHit ()计算下一步的仿真时刻由sys变量返回9终止mdlTerminate()终止仿真过程,不返回任何变量S函数的模板格式为:fu

28、nction sys,x0,str,ts = sfuntmpl(t,x,u,flag)switch flag, case 0, sys,x0,str,ts=mdlInitializeSizes; %调用初始化子函数 case 1, sys=mdlDerivatives(t,x,u); %调用计算导数子函数 case 2, sys=mdlUpdate(t,x,u); %调用离散状态变量更新子函数 case 3, sys=mdlOutputs(t,x,u); % 计算输出子函数 case 4, sys=mdlGetTimeNextVarHit(t,x,u); %计算下一仿真时刻子函数 case 9, sys=mdlTerminate(t,x,u); % 终止仿真子函数 otherwise error(Unhandled flag = ,num2str(flag);

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论