MATLAB语言及应用.ppt
《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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MATLAB 语言 应用
链接地址:https://www.31ppt.com/p-6512139.html