MATLAB语言及应用.ppt

上传人:小飞机 文档编号:6512139 上传时间:2023-11-08 格式:PPT 页数:96 大小:878KB
返回 下载 相关 举报
MATLAB语言及应用.ppt_第1页
第1页 / 共96页
MATLAB语言及应用.ppt_第2页
第2页 / 共96页
MATLAB语言及应用.ppt_第3页
第3页 / 共96页
MATLAB语言及应用.ppt_第4页
第4页 / 共96页
MATLAB语言及应用.ppt_第5页
第5页 / 共96页
点击查看更多>>
资源描述

《MATLAB语言及应用.ppt》由会员分享,可在线阅读,更多相关《MATLAB语言及应用.ppt(96页珍藏版)》请在三一办公上搜索。

1、系统建模与仿真,王海英,参考教材:控制系统的MATLAB与仿真,王海英,高等教育出版社系统建模与仿真,张晓华,清华大学出版社,主要内容,MATLAB语言及应用系统建模系统仿真及应用,第一部分,MATLAB语言及应用,1.Matlab操作桌面,命令窗口 历史命令窗口 当前目录浏览器 工作空间浏览器 M文件编辑器/调试器 帮助导航,2.MATLAB编程基础,变量 变量命名规则变量的定义特殊变量,示例,基本数据类型,在MATLAB中共有六种数据类型,每一种类型可以是一维、二维和多维的。基本的数据类型是双精度型复数(double)和字符型(char)。MATLAB以复数矩阵为基本的运算单元。,基本语句

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

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

4、“”括起来数组的行与行之间用分号“;”分隔,或者用回车符分隔每行之间的元素必须用逗号“,”或者空格分隔利用M文件 如果数组元素很多,或者元素值要经常改变,我们可以采用M文件来输入和保存数组。,例3.2,例3.3(mydata.m),二维数组的访问,二维数组的访问遵循以下约定:用下标方式访问数组元素,下标要用一对圆形括号()引起来。可以用双下标方式访问数组元素,格式为(r,c),其中r为二维数组的行下标,c为二维数组的列下标,下标之间用逗号分隔。可以用单下标方式访问二维数组,二维数组的单下标是按照列优先规则排序的,即二维数组被看作是从第一列开始从左到右依次将各列首位连接而成的一维数组,单下标表示

5、元素在这个一维数组中的位置。单下标和双下标具有对应关系可以访问二维数组的某个元素及其子数组,可以对元素和子数组赋值。,例3.4,数组操作,标准数组的生成数组操作,数组运算,数组运算符数组运算函数,矩阵运算,矩阵运算符矩阵函数,例3.5例3.6,例3.8,ones功能:生成全1数组,即数组中的元素都为1。格式:Y=ones(n)%生成nn的全1矩阵Y=ones(m1,m2,mk)%生成m1m2mk的全1数组 Y=ones(size(A)%生成和数组A同样尺寸的全1数组zeros功能:生成全0数组,即数组中的元素都为0。格式:同ones函数rand功能:生成均匀分布随机数组。格式:Y=sand(s

6、tate,v)%设置随机发生器的初始状态为v,其他同ones函数randn 功能:产生正态分布随机数组。格式:同rand函数,常用的标准数组,magic功能:产生魔方矩阵,不适用于高维数组。格式:M=magic(n)说明:产生nn的魔方矩阵eye功能:产生单位矩阵,即主对角线元素都为1而其他元素都为0的二维数组格式:Y=eye(n),Y=eye(n,m),Y=eys(size(A)Diag功能:产生对角阵,即矩阵的某个对角线元素不全为0,其他元素为0。格式:X=diag(v,k)说明:v为行向量,表示对角线元素。,返回,常用的数组运算符,A+B 数组加法运算A-B 数组减法运算A.*B数组相乘

7、,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指数对数函数:exp指数函数log自然对数函数log10以10为底的对数函数log2以2为底的对数函数pow22的幂函数sqrt平方根函数复数函数abs绝对值,模angle相角(弧度)imag复数的虚部real复数的实部conj复数的共轭取整函数ceil向+方向取整fix向0方

8、向取整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)矩阵的平方根函数inv(A)矩阵的逆矩阵,返回,多项式,多项式的创建多项式的运算,运算符,关系运算符 逻辑运算符逻辑函数 算术运算符,关系运算符大于=大于等于=等于!=不等于,逻辑运算符&逻辑与|逻辑或 逻辑非,示例,例3.9,例3.10,例3.11,例3.12,多项式常用运算,多项式加减:+-%运算符

9、+-实现多项式的加减法多项式相乘:p=conv(p1,p2)%p为多项式p1和多项式p2的乘积多项式相除:q,r=deconv(p1,p2)%多项式p1除以多项式p2,商多项式为q,余多项式为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)矩阵的特征

10、多项式:p=poly(A)%多项式p为矩阵A的特征多项式,返回,常用逻辑函数,any(v)向量v中有非0元素,结果为1,否则为0;结果是行向量all(v)向量v中都是非0元素,结果为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 islogi

11、calisnumeric isobject issparse isstruct,返回,4.数据的可视化,图形窗口创建Figure%创建新的图形窗口,并将新创建的窗口作为当前绘图窗口。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_marker 为由颜色、线型、数据点等组成的字符串绘图

12、窗口的属性控制,例4.3,例4.2,例4.4例4.5,颜色字符定义表,线型字符定义表,数据点标记字符定义表,常用二维图形绘制函数表,例4.6,三维图形,基本三维图形的绘制plot3(X,Y,Z,s)三维网线图 mesh(X,Y,Z)曲面图surf(X,Y,Z,C)函数绘图 一元函数绘图ezplot(F,xmin,ymin)二元函数绘图ezsurf(F,domain,ngrid)%在指定矩形区域上,用指定格点数画二元函数曲面ezsurf(F,domain,circ)%在极坐标中绘制二元函数曲面,例4.7设某参数方程组为,试绘制由变量x,y,z确定的三维曲线。,例4.7,例4.8 绘制函数,在自变

13、量取,范围内的网线图和曲面图。,例4.8,例4.9 绘制球面,锥面等图形,例4.9,例4.10 绘制,在0t20区间的函数曲线。,例4.11 在极坐标系中绘制,的图形。,例4.10,例4.11,5.M文件和程序设计,分支控制,程序控制语句,if结构 if expressioncommandsend【说明】当表达式expression的值为真,则执行commands语句组,否则跳过commands语句组,执行end之后的语句。,if-else结构 if expressioncommands1elsecommands2end【说明】如果表达式expression的值为真,则执行语句组command

14、1,然后跳过语句组command2向下执行;若表达式expression的值为假,则跳过语句组commands1而执行语句组commands2。,if-elseif-else结构if expression_1command_1elseif expression_2command_2elseif expression_ncommand_nelsecommand_elend【说明】如果表达式expression_1的值为真,则执行语句组command_1,若表达式expression_1的值为假,则判断expression_2的值,若为真,则执行语句组command_2,否则向下继续判断表达式。如

15、果所有表达式都为假,则执行语句组command_el。,例5.1 有分段函数,编程输入x的值,计算并显示函数值。,例5.1,switch-case结构switch exp_const case value_1 commands_1 case value_2 commands_2 case value_n commands_notherwise commands_owend【说明】表达式exp_const的值和哪一个case语句后的测试值相等,就执行那个case语句下的语句组。如果exp_const和所有测试值都不相等,就执行otherwise后的语句组commands_ow。,循环控制for循

16、环for x=Arraycommandsend【说明】x称为循环变量,commands称为循环体。循环的执行步骤是:循环变量从左到右依次取Array数组的一列,每取一列就执行一次循环体,循环体被执行的次数为Array的列数。while循环while expressioncommandsend【说明】如果表达式expression的值为真,则执行commands循环体,直到表达式expression的值为假,结束循环。break【说明】从循环体中跳出,并使循环结束。,例5.2:输入物品的标签号码,显示物品的种类。其中标签号码为1、5、7的物品为食品,号码为10到19的物品为办公用品,号码为20、

17、24、28的为音像制品。要求不断从键盘输入标签号码,输入一个号码显示一次物品种类,输入错误号码要给出提示,输入号码0则结束输入。,例5.2,命令文件,命令文件没有输入参数也没有输出参数,只是一些Matlab命令和函数的组合。命令文件可以操作基本工作空间的变量,也可以生成新的变量。命令文件执行结束后新变量将保存在基本工作空间中,不会被自动清除。命令文件是用“.m”为扩展名的文件,只要命令文件在搜索路径上,在命令窗口键入文件名就可以运行命令文件。,例5.3:编写命令文件,用于求解小于1000且为2的整数次幂的正整数。,例5.3,函数文件要在第一行用function关键字来显式的定义。函数文件有输入

18、变量和输出变量。函数文件的名字和第一行所定义的函数名相同。可以用比函数定义中数目少的输入变量和输出变量来调用函数。函数文件内部定义的变量属于临时变量,只有函数运行期间才被生成,函数运行结束后,系统自动删除。,函数文件,函数M文件组成,函数定义行函数M文件的第一行用关键字“function”把M文件定义为一个函数,指定函数的名字,同时定义了函数的输入变量和输出变量。输入变量的定义用圆括号(),如果有多个输入变量则用逗号分隔;输出变量的定义用中括号,如果有多个输出变量则用逗号分隔。H1行所谓H1行指帮助文本的第一行,它紧跟在定义行之后并以“%”符号开头,用于概括说明函数的功能。在命令窗口用look

19、for命令时将显示函数的H1行。函数帮助文本帮助文本指位于H1行之后函数体之前的说明文本,它同样以“%”符号开头,一般用来比较详细地介绍函数的功能、用法以及函数的修改记录。在命令窗口用help命令时将显示函数的H1行和所有帮助文本。,函数体是函数的主体部分,函数的功能是通过函数体实现的。函数体可以包括所有的Matlab合法命令、函数和流程控制语句。注释除了函数开始处独立的帮助文本外,还可以在函数体中添加对语句的注释。注释必须以“%”符号开头,MATLAB在解释执行M文件时把每一行中“%”后面的全部内容作为注释不进行解释执行。,例5.4:编写函数文件求,例5.4,子函数,Matlab允许一个函数

20、文件内定义多个函数。其中,第一个定义的函数称为主函数,其他的函数称为子函数。关于主函数和子函数的描述如下:每个文件的第一行定义的是主函数;只有主函数可以被其他程序调用;函数文件的名字必须和主函数相同;子函数只能被处在同一个文件中的主函数或者其他子函数调用;主函数和各个子函数的工作空间是彼此独立的,即每个函数拥有自己独立的工作空间。,私有函数,私有函数是在函数M文件所在目录的private子目录中的函数M文件,其性质如下:私有函数只能被private的直接父目录中定义的M文件调用,其他目录的M文件或者命令窗口无权调用私有函数。私有函数的定义和构成和普通函数相同。,例5.5:编写函数文件求,例5.

21、5,6.数值计算,线性代数函数分析数据拟合插值和样条常微分方程的数值解,线性代数,LU分解 一个矩阵可以分解为一个上三角矩阵和一个下三角矩阵的乘积,称之为LU分解。LU分解是用高斯主元消去法实现的,通常要对主元位置进行交换,主元交换的方法是将被分解矩阵左乘一个由01构成的行交换阵。L,U,P=lu(X)%对矩阵X进行LU分解,并进行主元交换 L,U=lu(X)%对矩阵X进行LU分解,无主元交换【说明】X为被分解的矩阵,L为主对角元素为1的下三角矩阵,U为上三角矩阵,P为行交换矩阵。行列式和求逆 矩阵的行列式和求逆可以通过LU分解的方法求解。d=det(X)%求矩阵X的行列式 Y=inv(X)%

22、求矩阵X的逆矩阵,例6.1,特征值和特征向量对于求解矩阵的特征值和特征向量。D=eig(A)%计算矩阵A的特征值,d为特征值构成的向量 V,D=eig(A)%计算矩阵A的特征值对角阵D和特征向量矩阵V V,D=eig(A,nobalance)%当矩阵A中有与截断误差近似的数值 c=condeig(A)%求特征值的条件数,表示特征值对扰动的灵敏度矩阵的奇异值分解任意矩阵A可以做奇异值分解,即存在酉矩阵U和V,使下面等式成立 s=svd(A)%求矩阵A的奇异值,s为由奇异值构成的向量 U,S,V=svd(A)%矩阵A的奇异值分解,例6.2,矩阵结构特征的奇异值描述矩阵的奇异值可以描述矩阵的结构特征

23、,Matlab中提供了下列函数,函数的具体使用方法请读者参阅Matlab的帮助文件。r=rank(A)%求矩阵A的秩。Z=null(A)%求矩阵A的零空间。V=orth(A)%求矩阵A的值空间。n=norm(A)%求矩阵A的2范数。n=norm(A,p)%求矩阵A的各种范数。c=cond(X)%求矩阵A的条件数。theta=subspace(A,B)%求A和B矩阵所张子空间的夹角。B=pinv(A)%求矩阵A的广义逆。,线性方程组的解 在线性方程组中,独立方程的个数等于独立未知参数的个数,称为恰定方程;独立方程的个数大于独立未知参数的个数,称为超定方程;独立方程的个数小于独立未知参数的个数,称

24、为欠定方程。线性方程组求解方法:左除运算符法-对于一般的非奇异矩阵A,可以求得唯一数值解。欠定方程和超定方程,可以获得最小二乘解。x=Ab 广义逆法-如果用左除运算符求解的时候出现提示矩阵A为非奇异的警告或者解中出现Nan,则可以采用广义逆法。x=pinv(A)*b符号计算法-可以求得方程组的符号解,对于欠定方程可以求得具有自由变量的解。,例6.3 求以下3个方程组的解,II:,III:,I:,例6.3,函数分析,函数的零点多项式的根 r=roots(p)%多项式求根函数一元函数零点 x=fzero(fun,x0)%一元函数零点的最简格式多元函数的零点 x=fsolve(fun,x0)%多元非

25、线性方程求解最简格式【说明】fzero只能求得x0附近的单个零点,不能求取函数的所有零点。输入变量fun表示一元函数,可以是字符串、内联函数或者函数句柄。输入变量x0为零点的初始猜测值(自变量值)。输出变量x为零点处的自变量值。,在,区间内的所有零点。,例6.4求函数,例6.4,例6.5,附近的解。,例6.5求方程组,在,函数的极值点求一元函数fun在自变量(x1,x2)区间的最小值x,fval,exitflag,output=fminbnd(fun,x1,x2,options)用单纯形法求多元函数fun在自变量向量x0附近的极小值点x,fval,exitflag,output=fminsea

26、rch(fun,x0,options)用拟牛顿法求多元函数fun在自变量向量x0附近的极小值点x,fval,exitflag,output=fminunc(fun,x0,options),例6.6,例6.6 求二元函数,在,附近的极小值。,数值微分 数值导数和微分是基于差分定义的,对原始数据的采样间隔依赖很大,如果原始数据含有噪声,则数值导数结果没有什么价值,因此尽量避免求数值导数,求相邻数据间的数值差分。DX=diff(X)%求X相邻元素的一阶差分 DX=diff(X,n)%求X相邻元素的n阶差分 DX=diff(X,n,dim)%在dim指定的维上,求X相邻元素的n阶差分,【说明】如果X是

27、向量,差分是相邻元素相减;如果X是矩阵,差分是相邻行间对应元素相减。差分数据DX元素的个数要比被操作数X少一个。DX只是差分数据,如果相邻数据点之间的步长为DH,则DX./DH为导数数据。,例6.7 绘制函数,的导函数在,区间的曲线。,例6.7,数值积分 积分计算可以采用本节介绍的相关函数,也可以采用样条积分法,还可以采用符号积分方法。一元函数的数值积分q=quadl(fun,a,b)%采用递推自适应Lobatto法计算一元函数的积分【说明】fun为被积函数,可以用字符串、内联函数和函数M文件的函数句柄表示,且被积函数表达式要按照数组运算规则来编写。通常积分变量采用字母x。a和b为积分变量的积

28、分上下限,为常数数值。返回值q为数值积分的结果。,例6.8 求积分,例6.8,二重数值积分q=dblquad(fun,x1,x2,y1,y2)【说明】fun为被积函数,可以用字符串、内联函数和函数M文件的函数句柄表示。积分变量用x,y表示,x为内重积分变量,x2和x1是变量x的积分上下限,y为外重积分变量,y2和y1是变量y的积分上下限。三重数值积分q=triplequad(fun,x1,x2,y1,y2,z1,z2)【说明】fun为被积函数,定义同上。积分变量用x,y,z表示,从内到外积分变量依次为x,y,z。x2和x1是变量x的积分上下限,y2和y1是变量y的积分上下限,z2和z1是变量z

29、的积分上下限。,例6.9 计算定积分,例6.9,数据拟合,已知某些离散的原始数据,建立一个曲线方程,让它以最佳的方式反映原始数据的变化趋势,尽量避免出现局部的波动,这种方法称为拟合。不要求拟合曲线经过所有的原始数据。最佳方式通常是指用拟合得到的数学模型计算出来的计算数据和原始数据之间的误差的平方和最小,这种方式称为最小二乘。,多项式拟合多项式拟合是用一个n阶多项式模型去拟合原始数据的方法,需要计算的模型参数包括多项式的阶次和多项式的系数。p=polyfit(x,y,n)%根据给定的数据(x,y),计算n阶拟合多项式的系数向量py=polyval(p,x)%计算自变量为x时多项式p的值(估计值)

30、【说明】多项式拟合一般不要超过5阶,否则计算误差变大。拟合多项式只在原始数据范围内可以保证精度,超出范围使用拟合多项式无法保证预报的精度。,例6.10:已知五个数据点:1,5.5,2,43,3,128,4,290,5,498试画出这五个点拟合的三次曲线。,例6.10,最小二乘估计线性最小二乘估计 对于线性数学模型的参数估计,可以用形如Y=Ax+b的一阶多项式拟合来估计参数。某些非线性模型经过变量替换也可以转换为线性模型,也可以采用线性估计方法。非线性最小二乘估计a,resnorm,residual,exitflag,output=lsqnonlin(Fun,a0,lb,ub,options,p

31、1,p2,.)a=lsqnonlin(Fun,a0),【说明】,例6.11 混凝土的抗压强度y随养护时间x的延长而增加,其数学模型为,现将一批混凝土作成12个测试块,记录了养护时间x(日)及抗压强度y(kg/cm2)的数据,如表所示。试估计该数学模型的参数a1,a2,a3,a4。,混凝土的抗压强度y和养护时间x的实测数据表,例6.11,插值和样条,曲线拟合是用带有噪声的“测量数据”构造出以某种方式最接近“真实数据”的曲线方程,因为测量数据包含噪声,所以不要求拟合曲线穿越所有测量数据。插值和拟合不同,插值认为原始数据是完全准确的,目的是用某种算法平滑的计算出这些原始数据之间的数据值。,插值yi=

32、interp1(x,Y,xi,method)%计算插值点自变量为xi时的值yipp=interp1(x,Y,method,pp)%用原始数据获取插值函数数据yi=ppval(pp,xi)%计算插值函数数据pp函数关系下的函数值【说明】输入变量x,Y是原始数据向量对。x的数据必须以单调方式排列。xi是插值点的自变量坐标向量。输入变量method是插值方法,linear-线性插值,缺省值,cublic-三次多项式插值,spline-三次样条插值,nearst-最临近插值输出变量yi为插值点自变量为xi时的计算值,pp为插值函数数据,例6.12 已知1900年到1990年间,每隔10年美国的人口数量

33、的统计数据(单位:百万)依次为75.995,91.972,105.711,123.203,131.669,150.697,179.323,203.212,226.505,249.633,求在1975年美国人口的数量,并绘制1900到1990年间每年的人口数量趋势图。,例6.12,样条样条插值是常用的一种插值方法,其特点是精度高、最平滑,但是运算速度慢。yy=spline(x,y,xx)%根据原始数据(x,y)计算xx的样条插值yy pp=spline(x,y)%根据原始数据(x,y)计算分段样条函数数据pp dpp=fnder(pp)%求pp形式的样条函数的不定积分 ipp=fnint(pp)

34、%求pp 形式的样条函数的导数,例6.13,例6.13 设函数,,用样条函数求,和,常微分方程的数值解,ODE文件的编写格式 要编写表示一阶向量微分方程的函数M文件,实现 的微分计算function DY=Fun(t,Y)其中输入变量t为时间变量,输入变量Y为列向量,输出变量DY是Y的一阶导数。,只含有一个自变量的微分方程称为常微分方程(ODE)。工程上的许多常微分方程或者没有解析解,或者求解析解困难太大,这时可以选择其数值解法。,solver解算指令常微分方程化成一阶向量微分方程时,某些向量微分方程的向量解的各个分量的量级差别较大,这对数值求解算法来说是很大的困难,表列出了solve各个解算

35、指令的名称、精度和适用范围。,solve解算指令,solve解算指令的调用格式t,Y=solver(ODE_FUN,tspan,Y0,options)【说明】输入变量ODE_FUN是ODE函数的文件名。输入变量tspan为求数值解的时间范围。当tspan=t0,tf时,表示求解t0到tf区间的数值解;当tspan=t0,t1,.,tf时,表示求解tspan指定时间序列上的数值解。输入变量Y0是微分方程组的初始条件列向量。输入变量options是可选择的算法参数。输出变量t是数值解的自变量数据列向量。输出变量Y是数值解。Y是一个矩阵,每一列代表了向量解的一个分量在自变量t上的数值解。solver

36、不仅可以求解常微分方程,还可以求解常微分方程组。,例6.14 求常微分方程,的解,其初始条件为,(1)将常微分方程变为一阶微分方程组,令,则,(2)编写ODE文件,OdeFun1.m,(3)求解常微分方程的数值解,绘制y(t)的曲线,(3)求解常微分方程的数值解,绘制y(t)的曲线,例6.14,例6.15 求常微分方程组,在0,12区间的数值解。其初始条件为,(1)编写ODE文件,OdeFun2.m,(2)求解常微分方程的数值解,绘制y(t)的曲线,例6.15,7符号计算,符号对象的创建 符号对象的生成符号对象的数据存储格式是符号字符串,包括符号常量、符号变量和符号表达式。f=sym(arg)

37、%把数值、字符串或者表达式arg转换为符号对象ff=sym(argn,flagn)%把数值或数值表达式argn转换为flag格式的符号对象f=sym(argv,flagv)%把字符串argv按照flagv的格式转换为符号对象syms argv1 argv2.%定义argv1、argv2等为符号对象syms arg1 arg2.flagv%定义arg1、arg2等为flagv格式的符号对象,【说明】对于数值或者数值表达式argn,flagn可以取以下值:d最接近的十进制浮点精度表示e带估计误差的有理表示f十六进制浮点数表示r最接近的有理表示,Matlab的缺省表示方法对于字符串变量名argv,f

38、lagv可以取以下“限定”项:positive“正实数”符号变量real“实数”符号变量unreal“非实数”符号变量syms是sym函数的简化书写方式,各符号对象之间只能用空格分开。,符号常量用sym函数可以定义符号常量对象,包括符号标量对象和符号常量数组对象,定义符号常量对象的同时也可以指定数值常量的表示方法。,例7.1,符号变量与符号表达式定义符号变量和符号表达式符号表达式中自变量的确定 为了便于进行数学运算,通常要显示的指定表达式中的自变量,如果不指定自变量,Matlab会根据上下文关系,识别表达式中默认的自变量(独立自由的符号变量)。识别表达式中自变量的基本原则是:按照字母表中靠近小

39、写字母x的顺序识别,最靠近字母x的变量被第一个识别为自变量。,例7.2,例7.3,【说明】表达式可以是符号矩阵,此时变量识别是对整个矩阵进行的。函数识别的是“独立的”“自由的”符号变量,符号常量或者非独立的符号变量无法被识别。识别次序是按照靠近x的远近进行的,区分大小写,总认为大写字母距离x的距离大于所有小写字母。,例7.4,findsym(exp)%识别表达式exp中所有的自由符号变量findsym(exp,n)%识别表达式exp中最靠近x的N个独立自由变量,符号数学函数在Matlab中,既能建立具有详细运算关系的函数,又能建立抽象数学函数。定义符号数学函数有2种方法:用符号表达式用函数M文

40、件(在函数M文件中用符号变量作为输入变量),例7.5,Sinc函数,示例用函数M文件来定义符号数学函数,例7.6 建立抽象的符号数学函数,例7.6,符号对象与其他数据类型之间的转换表7.1实现符号对象到数值、字符串之间的转换指令。,例7.7 多项式和符号对象之间的转换,例7.7,符号对象的代数运算,符号对象的运算符号对象的基本代数运算 符号对象的基本代数运算和普通数值变量一样,可以使用算术运算符、关系运算符(仅能使用和!),其运算符的定义和数值运算相同。符号对象的函数运算数值计算使用的函数基本上也可以用于符号计算,包括三角函数(atan2除外)、指数函数、对数函数(log2、log10除外)、

41、复数函数(angle除外)、线性代数函数和矩阵函数。,例7.8,例7.9,符号表达式分解、展开与化简 collect(expr,v)%合并符号表达式expr中符号对象v的同类项系数expand(expr)%对表达式expr进行多项式、三角函数、指数对数等函数展开factor(expr)%对符号表达式expr做因式分解horner(expr)%把多项式expr分解为嵌套形式n,d=numden(expr)%提取表达式最小分母公因子d和相应的分子多项式nsimplify(expr)%用多种恒定变换对表达式expr进行综合化简simple(expr)%把expr化简为最简表达式,例7.10,例7.1

42、1 写出矩阵,各元素的分子多项式和分母多项式,例7.11,例7.12化简,例7.12,符号函数的反函数g=finverse(f,v)%求指定自变量为v的函数f(v)的反函数g(v)g=finverse(f)%求函数f对缺省的自变量(由findsym确定)的反函数g,例7.13 求,的反函数。,例7.13,符号微积分,符号微分和雅可比矩阵求导数、高阶导数、偏导数是常见的数学运算 df=diff(f,v,n)%求函数对的n阶导数R=jacobian(f,v)%求多元向量函数的雅可比矩阵,函数极限函数的极限是通过导数来定义的。limit(F,x,a)%求,例7.14,例7.15,例7.16,符号积分

43、求定积分、不定积分和多重积分的符号解。S=int(f,v)%求不定积分,符号计算结果不带积分常数S=int(f,v,a,b)%求定积分【说明】当f为矩阵时,将对矩阵的每个元素做积分运算。v缺省时,积分对findsym确认的变量进行。积分上下限a和b可以是任何数值和表达式,例7.17 计算,例7.17,例7.18求多重积分,例7.18,符号序列求和s=symsum(f,v,a,b)%实现符号序列的求和运算。,例7.19 计算,和,例7.19,符号方程求解,符号代数方程组的解 代数方程包括线性、非线性和超越方程等。g=solve(eq1,eq2,.,eqn,var1,var2,.,varn)g=s

44、olve(exp1,exp2,.,expn,var1,var2,.,varn)【说明】eq1,eq2,.,eqn是字符串表达式的方程,或者是字符串表达式,如果它们是不含等号的字符串表达式,则相当于方程eqi0var1,var2,.,varn是用字符串表示的方程中的变量名exp1,exp2,.,expn只能是符号表达式,不能是带有等号的表达式方程。var1,var2,.,varn只能是符号变量。返回值g是一个结构体数据,方程组的解用g.var1,g.var2,.,g.varn表示。在无法求得解析解的时候,给出数值解。,例7.20,例7.20,例7.21,例7.21,符号微分方程g=dsolve(

45、eq1,eq2,.,eqn,cond1,cond2,.,condn,v)【说明】eq1,eq2,.,eqn是微分方程,只能用字符串形式。微分方程是函数必须的输入变量。cond1,cond2,.,condn是初始条件,也只能用字符串形式。v定义了微分方程的独立变量名(微分方程解中的自变量名),只能用字符串形式。默认的独立变量名为t。微分方程字符串中,Dny表示y的n阶导数,Dy表示y的一阶导数。返回值g是一个结构体变量,要引用其成员才能得到方程的解。,例7.22,例7.22,例7.23,例7.23,积分变换,傅立叶变换及其反变换 Fw=fourier(ft,t,w)%求时域函数ft的傅氏变换Fw

46、ft=ifourier(Fw,w,t)%求频域函数Fw的傅氏反变换ft【说明】ft是以时间t为自变量的时域函数;Fw是以角频率w为自变量的频域函数。一般输入参数t和w可以省略。,例7.24,例7.24,拉普拉斯变换及其反变换Fs=laplace(ft,t,s)%求时域函数ft的拉氏变换Fwft=ilaplace(Fs,s,t)%求频域Fs的拉氏反变换ft【说明】ft是以时间t为自变量的时域函数;Fs是以复频率s为自变量的频域函数。一般输入参数t和s可以省略。,例7.25,例7.25,变换及其反变换Fz=ztrans(fn,n,z)%求时域序列fn的Z变换FzFn=iztrans(Fz,z,n)

47、%求频域序列Fz的Z反变换fn,例7.26,例7.26,从10个采样周期内的响应值可以可以看到:系统的单位速度响应从第2个采样周期后就完全跟随上了输入信号,因此跟踪拍数为2。,8 Simulink,一、Simulink的基本操作,在MATLAB的命令窗口直接键入“Simulink”并回车;单击MATLAB工具条上的Simulink 图标;在MATLAB菜单上选FileNewModel。,运行Simulink 的三种方式:,常用的标准模块,信号源模块库(Sources),连续系统模块库(Continuous),离散系统模块库(Discrete),输出模块库(Sinks),非线性系统模块库(Dis

48、continuities),数学运算模块库(Math Operations),例8-1:已知单位负反馈二阶系统的开环传递函数为试绘制单位阶跃响应的实验结构图。,模块的操作,模块的选取模块的复制、剪切、删除、移动 模块的连接 模块参数的设置,模块的外形的调整,改变模块的大小 调整模块的方向 给模块加阴影,模块名的处理,模块名的显示与消隐 修改模块名,例8-2:对例8-1的结构图进行模块处理,二、系统仿真及参数设置,算法设置(Solver),设置起始时间和终止时间(Simulation time)算法设置(Solver option)算法类型设置仿真算法设置 设置输出选项,变步长解法,定步长解法,

49、工作空间设置(Workspace I/O),从工作空间读入数据(Load from workspace)保存数据到工作空间(Save to workspace)初始化状态模块,SIMULINK子系统,在已有的系统模型中建立子系统在已有的系统模型中新建子系统子系统应用 触发子系统:在控制信号满足某种变化要求的瞬间可以触发(激活)子系统,然后保持子系统的输出状态,等待下一个触发信号,它允许用户自己设置在控制信号的上升沿、下降沿或控制信号变化时触发子系统。使能子系统:控制信号分成“允许”和“禁止”两种,在允许信号控制下,可以执行子系统中的模块,否则将禁止其功能。为保证整个系统的连贯性,在禁止状态下子

50、系统仍然有输出信号,用户可以选择继续保持禁止前的信号,或复位子系统,强制使其输出零信号。使能触发子系统:在使能状态下被触发时将激活该子系统,否则将禁止子系统。封装子系统:将完成特定功能的相关模块集合到一起,对其中经常要设置的参数设置为变量,然后封装,使得其中变量可以在封装系统的参数设置对话框中统一进行设置。,例8.3,例8.4,图标编辑选项卡(Icon)参数设置选项卡(Parameters)初始化设置选项卡(Initialization)文档编辑选项卡(Documentation),例8.4,S函数的建立,S函数就是S-Functions,是System-Functions的缩写。当MATLA

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号