Matlab软件应用与开发.ppt_第1页
Matlab软件应用与开发.ppt_第2页
Matlab软件应用与开发.ppt_第3页
Matlab软件应用与开发.ppt_第4页
Matlab软件应用与开发.ppt_第5页
已阅读5页,还剩120页未读 继续免费阅读

下载本文档

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

文档简介

Matlab软件应用与开发,主讲教师:高媛媛 联系电话电子邮件:,课程安排,Matlab的操作基础 Matlab的矩阵及其运算 Matlab的程序设计 Matlab的符号运算 Matlab的科学绘图 Matlab的在数值分析、优化中的应用,第1章 MATLAB的操作基础,1.1 MATLAB概述 1.2 MATLAB的安装 1.3 MATLAB集成环境 1.4 MATLAB帮助系统,1.1 MATLAB概述,1.1.1 MATLAB的简介,Matlab是Matrix(矩阵)和Laboratory(实验室)两个英语单词的前3个字母的组合。它一开始是美国新墨西哥大学计算机系主任Clever Moler博士在20世纪70年代后期为Linpack和Eispack这两个矩阵运算的软件包编写的接口程序,目的是方便所设立的线性代数课程的教学,当时为这个接口程序取了一个名字叫做Matlab。在以后的一段时间,Matlab在很多大学里作为教学辅助软件使用。1983年,工程师John Little和Clever Moler博士,用C语言开发了Matlab的第二代专业版本,这一版本同时具有了数值计算和数据可视化的功能。 Matlab主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。,1.1.2 MATLAB的主要功能,1)数值计算和符号计算功能 MATLAB以矩阵作为数据操作的基本单位,还提供了十分丰富的数值计算函数。 MATLAB和著名的符号计算语言Maple相结合,使得MATLAB具有符号计算功能。,2)绘图功能(数据模拟) MATLAB提供了两个层次的绘图操作:一种是对图形句柄进行的低层绘图操作,另一种是建立在低层绘图操作之上的高层绘图操作。,1.1.2 MATLAB的主要功能,3)编程语言 MATLAB具有程序结构控制、函数调用、数据结构、输入输出、面向对象等程序语言特征,而且简单易学、编程效率高。 联合编程:与.NET/Excel/C/C+等其他软件环境联合编程,1.1.2 MATLAB的主要功能,4) MATLAB工具箱 MATLAB包含两部分内容:基本部分和各种可选的工具箱。 MATLAB工具箱分为两大类:功能性工具箱和学科性工具箱。 可视化建模与仿真,1.1.2 MATLAB的主要功能,1.2 MATLAB的安装,安装MATLAB 7.0系统,需运行系统自带的安装程序setup.exe,可以按照安装提示依次操作。,1.3 MATLAB集成环境,1.3.1 命令窗口,一般来说,一个命令行输入一条命令,命令行以回车结束。但一个命令行也可以输入若干条命令,各命令之间以逗号分隔,若前一命令后带有分号,则逗号可以省略。例如 p=15,m=35 p=15;m=35,1.3.1 命令窗口,如果一个命令行很长,一个物理行之内写不下,可以在第一个物理行之后加上3个小黑点并按下回车键,然后接着下一个物理行继续写命令的其他部分。3个小黑点()称为续行符,即把下面的物理行看作该行的逻辑继续。 在MATLAB里,有很多的控制键和方向键可用于命令行的编辑。,home:移动光标到左上角 clc:清除命令窗口,1.3.1 命令窗口,1.3.2 工作空间窗口,工作空间是MATLAB用于存储各种变量和结果的内存空间。在该窗口中显示工作空间中所有变量的名称、大小、字节数和变量类型说明,可对变量进行观察、编辑、保存和删除。 clear:清除当前工作空间的变量 例1.1 clear %清除当前工作空间的所有变量 clear var1 var2 %清除变量var1、var2 clear a* %清除以a开头的变量 who:查看当前工作空间的所有变量(信息简短) whos:作用同who。给出变量的大小、数据类 型等具体内容。,1.3.3 当前目录窗口和搜索路径,1)当前目录浏览器 Matlab将许多内部函数放在不同的目录下,在调用函数时,首先查看当前目录,然后查看搜索路径中的目录。任何需要执行的文件都必须放在当前目录或搜索路径中,文件才能顺利运行。 在命令窗口输入cd命令改变当前目录。 例1.2 将用户目录c:mydir设置为当前目录,可在命令窗口输入命令: cd c:mydir 改变当前目录快速而又高效的方法是使用桌面上的目录工具条。,2)搜索路径 文件在执行时必须位于当前目录或者是搜索路径中。使用path命令可以查看Matlab默认的搜索路径。 例1.3 path MATLABPATH D:MATLAB701toolboxmatlabgeneral D:MATLAB701toolboxmatlabops ,设置搜索路径的方法有: (1) 用path命令设置搜索路径。 例1.4 将用户目录c:mydir加到搜索路径下,可在命令窗口输入命令: path(path,c:mydir) (2)用对话框设置搜索路径 在MATLAB的File菜单中选Set Path命令或在命令窗口执行pathtool命令,将出现搜索路径设置对话框。通过Add Folder或Add with Subfolder命令按钮将指定路径添加到搜索路径列表中。,1.3.4命令历史记录窗口,在默认设置下,历史记录窗口中会自动保留自安装起所有用过的命令的历史记录,并且还标明了使用时间,从而方便用户查询。而且,通过双击命令可进行历史命令的再运行。如果要清除这些历史记录,可以选择Edit菜单中的Clear Command History命令。,1.4 MATLAB帮助系统,进入帮助窗口可以通过以下3种方法: (1) 单击MATLAB主窗口工具栏中的Help按钮。 (2) 在命令窗口中输入helpwin、helpdesk或doc。 (3) 选择Help菜单中的“MATLAB Help”选项。,1.4.1 帮助窗口,MATLAB帮助命令包括help、lookfor以及模糊查询。 1)help命令 在MATLAB 7.0命令窗口中直接输入help命令将会显示当前帮助系统中所包含的所有项目,即搜索路径中所有的目录名称。同样,可以通过help加函数名来显示该函数的帮助说明。,1.4.2 帮助命令,2)lookfor命令 help命令只搜索出那些关键字完全匹配的结果,lookfor命令对搜索范围内的M文件进行关键字搜索,条件比较宽松。 lookfor命令只对M文件的第一行进行关键字搜索。若在lookfor命令加上-all选项,则可对M文件进行全文搜索。,3)模糊查询 MATLAB 6.0以上的版本提供了一种类似模糊查询的命令查询方法,用户只需要输入命令的前几个字母,然后按Tab键,系统就会列出所有以这几个字母开头的命令。,在帮助窗口中选择演示系统(Demos)选项卡,然后在其中选择相应的演示模块,或者在命令窗口输入Demos,或者选择主窗口Help菜单中的Demos子菜单,打开演示系统。,1.4.3 演示系统, WWW网站 Matlab中文论坛 Matlab中国论坛,1.4.4 Matlab的网络资源,2.1 矩阵的建立 2.2 矩阵的抽取、扩展和删除 2.3矩阵的运算 2.4字符串和数组 2.5矩阵特征参数,第2章 Matlab的矩阵及其运算,2.1 矩阵的建立,2.1.1 直接输入法 最简单的建立矩阵的方法是从键盘直接输入矩阵的元素。具体方法如下:将矩阵的元素用方括号括起来,按矩阵行的顺序输入各元素,同一行的各元素之间用空格或逗号分隔,不同行的元素之间用分号分隔。,2.1 矩阵的建立,2.1.2 冒号法 其基本格式为: X=初值:增量:终值 返回值X是从初值开始,以增量为步长,直到不超过终值的所有元素所构成的向量。默认步长为1,可以省略不写。 例 2.1 a=1:1.5:8 a= 1.0000 2.5000 4.0000 5.5000 7.0000 a=3:-pi:-5 a = 3.0000 -0.1416 -3.2832,2.1.3 调用函数linspace或logspace函数 linspace(a,b,n)返回以a为起点、b为终点的等间距的共n个元素的数组。函数logspace与linspace类似,它相当于在linspace命令的基础上再对每个元素做10的指数幂运算。 例2.2 linspace(0,1,6) ans = 0 0.2000 0.4000 0.6000 0.8000 1.0000 logspace(0,1,6) ans = 1.0000 1.5849 2.5119 3.9811 6.3096 10.0000,2.1 矩阵的建立,注意:列向量和行向量之间可以通过转置符 互相转换。不过需要注意的是,对于复数向量,转置符的作用是复共轭转置。符号 . 是对于复数向量的转置运算 。,例2.3 a=1:1:3; %定义行向量 b=a %转置成列向量 b= 1 2 3 c=a+a*i %创建复数数组 c= 1.0000+1.0000i 2.0000+2.0000i 3.0000+3.0000i d=c %复共轭转置 d = 1.0000 - 1.0000i 2.0000 - 2.0000i 3.0000 - 3.0000i e=c. %转置 e = 1.0000 + 1.0000i 2.0000 + 2.0000i 3.0000 + 3.0000i,1)通过下标引用矩阵的元素 采用矩阵元素的序号(按列排序)来引用 例2.4 A=1,2,3;4,5,6; A(3) A(2,3) 注意: 序号与下标是一一对应的,以mn矩阵A为例,矩阵 元素A(i,j)的序号为(j-1)*m+i。x(n)表示数组中的第n个元素。,2.2矩阵的抽取、扩展和删除,2.2.1矩阵的抽取,2) 利用冒号表达式获得子矩阵 A(:,j)表示取A矩阵的第j列全部元素; A(i,:)表示A矩阵第i行的全部元素; A(i,j)表示取A矩阵第i行、第j列的元素 A(i:i+m,:)表示取A矩阵第ii+m行的全部元素; A(:,k:k+m)表示取A矩阵第kk+m列的全部元素; A(i:i+m,k:k+m)表示取A矩阵第ii+m行内,并在第kk+m列中的所有元素。 此外,还可利用一般向量和end运算符来表示矩阵下标,从而获得子矩阵。end表示某一维的末尾元素下标。,例2.5 u=1:3;4:6;7:9 %定义数组 u = 1 2 3 4 5 6 7 8 9 v=u(:,1,3) %提取u的第一列、第三列元素 v = 1 3 4 6 7 9,由方括号中的小矩阵或向量建立起来。 例2.6 u=1:3;4:6;7:9 %输入3*3的二维数组 u = 1 2 3 4 5 6 7 8 9 u(4,:)=10:12 %扩展数组u的行 u = 1 2 3 4 5 6 7 8 9 10 11 12 u(:,4)=ones(4,1) %扩展数组u的列 u = %ones(m,n)生成m行n列全1的数组 1 2 3 1 4 5 6 1 7 8 9 1 10 11 12 1,2.2.2 矩阵的扩展,利用空矩阵删除矩阵的元素 在MATLAB中,定义为空矩阵。给变量X赋空矩阵的语句为X=。注意,X=与clear X不同,clear是将X从工作空间中删除,而空矩阵则存在于工作空间中,只是维数为0。 例2.7 u = 1 2 3 10 11 12 u(:)= %删除u的所有元素 u = size(u) %返回数组(矩阵)u的大小 ans = 0 0,2.2.3矩阵的删除,2.3矩阵的运算,两个矩阵的加减运算必须满足下列两个条件之一:(1)维数相同,即行数和列数分别相同。(2)其中一个为标量。,2.3.1 矩阵加减运算,例2.8 A=pascal(3) A = 1 1 1 1 2 3 1 3 6 B=ones(3); %生成3*3的元素全为1的矩阵 X=A+B X = 2 2 2 2 3 4 2 4 7 Y=A+1 %结果同X=A+B,2.3.2 矩阵乘法,矩阵乘法运算符为“*“。矩阵A*B要有意义,必须满足下列条件之一:(1)矩阵A的列数等于矩阵B的行数。(2)其中一个为标量。,2.3.3矩阵的除法,在MATLAB中,有两种矩阵除法运算: 和/,分别表示左除和右除 AB等效:inv(A)*B, B/A等效:B*inv(A)。 注意:左除和右除表示两种不同的除数矩阵和被除数矩阵的关系。 对于矩阵运算:ABB/A。 对于标量运算:A/a=aA,2.3.4矩阵的乘方,一个矩阵的乘方运算可以表示成Ax,要求A为方阵,x为标量。,2.3.5矩阵的点运算,在MATLAB中,有一种特殊的运算,因为其运算符是在有关算术运算符前面加点,所以叫点运算。 点运算符有.*、./、.和.。 两矩阵进行点运算是指它们的对应元素进行相关运算,要求两矩阵的维参数相同。,2.4 字符串和数组,在Matlab中的字符串一般是ASCII值的数组数组。它作为字符串表达式进行显示。,例2.9 建立一个字符串向量,然后对该向量做如下处理: (1) 取第15个字符组成的子字符串。 (2) 将字符串倒过来重新排列。 (3) 将字符串中的小写字母变成相应的大写字母,其余字符不变。 (4) 统计字符串中小写字母的个数。,命令如下: ch=ABc123d4e56Fg9; subch=ch(1:5) %取子字符串 revch=ch(end:-1:1) %将字符串倒排 k=find(ch=a %将小写字母变成相应的大写字母 char(ch) length(k) %统计小写字母的个数,2.4 矩阵的特征函数,size 函数来测量其大小 length 函数返回维的长度的最大值 Ndims 函数返回数组的维数。 例2.10 var=rand(3,4,5); %生成3*4*5大小的随机数 size(var) ans = 3 4 5 length(var) %作用同max(size(var) ans = 5 ndims(var) %作用同length(size(var) ans = 3,diag(A):设A为m*n矩阵,产生一具有min(m,n)个元素的列向量 diag(A,k):提取矩阵第k条对角线的元素 diag(V) :设V为具有m个元素的向量,产生一m*m对角矩阵, 主对角线元素即为向量V的元素 diag(V,k):产生一个n*n(n=m+k)对角阵,其中第m条对角线的元素即为向量V的元素 triu(A)、tril(A):求矩阵A的上三角阵、下三角阵 rot90(A,k) :矩阵A旋转90o的k倍,当k为1时可省略 fliplr(A)、flipud(A):矩阵A左右翻转、上下翻转,inv(A):方阵A的逆矩阵 pinv(A):求非方阵,或者非满秩的方阵A的伪逆矩阵 rank(A):矩阵A的秩 trace(A):矩阵的迹.等于矩阵的对角线元素之和,亦矩阵的特征值之和 E=eig(A):矩阵A的全部特征值,构成向量E V,D=eig(A):矩阵A的特征值构成对角阵D,并求A的特征向量构成V的列向量 det(A):矩阵A的行列式,第三章 Matlab的程序设计,3.1常量和变量 3.2运算符 3.3系统函数 3.4M文件 3.5程序的控制结构 3.6程序的编写技巧,3.1变量和常量,Matlab为特定的常数预留了一些名称,这些常量也可以重新赋值。常量在工作空间不能直接看到,使用者可直接调用。,3.1.1 常量,在Matlab中,变量分为局部变量和全局变量。变量名由一个字母开头,后面可以跟字母、数字、下划线等。在Matlab中,变量区分大小写。在M文件中,变量在使用前无需定义维数和每维的大小,但把一个变量赋给另一个变量时,要求赋值号右边的变量有值。 在M文件中定义的变量是局部变量,其作用域仅在本函数,仅能被本函数调用。全局变量定义后,能被其他函数调用,在命令窗口也可以调用。因此,可以在命令窗口或任意一个函数中改变全局变量的值。全局变量用global定义。如定义全局变量a,b:global a b。,3.1.2 变量,3.2运算符,Matlab的算术运算符可按优先级由低到高分为5级,每一级内优先级相同,运算时从左向右结合。各级所包含的运算符如下: (1)转置符(.)、幂符(.)、复共轭转置()、矩阵幂符()。 (2)标量加(+)、标量减(-)。 (3)向量乘法(.*)、向量右除(./)、向量左除(.)、矩阵乘法(*)、矩阵右除(/)、矩阵左除()。 (4)加法(+)、减法(-)。 (5)冒号运算符。,3.2.1算术运算符,3.2.2 关系运算符,关系运算符 大于 = 大于或等于 = 等于 = 不等于,逻辑运算符 & 逻辑与 A&B and(A,B) | 逻辑或 A|B or(A,B) 逻辑非 A not(A) Xor 逻辑异或,3.2.3逻辑运算符,3.3 .1逻辑函数,all 测试是否所有元素都非0 any 测试是否存在非零元素 exist 检查文件或变量是否存在 find 搜索非零元素的索引和值 ischar 测试是否为字符串数组,是则返回1 isempty 测试是否是空数组,是则返回1 isfinite 数组的元素有限时,返回数组的相应位置为1 ishold 若“hold”命令处于“on”状态时,则返回1 isinf 数组的元素无穷大时,返回数组的相应位置为1 isletter 数组的元素为字母时,返回数组的相应位置为1 isreal 参数无虚部,返回1 isspace 元素为空格字符,返回1 isstr 参数为字符串,返回1,3.3 系统函数,3.3.2 数学函数,3.4 M文件,Matlab语言为解释性程序设计语言,程序中的语句边解释边执行。Matlab是用C语言编写的,具有C语言自由、灵活、简洁的风格。使用Matlab书写程序,形式非常自由,而且利用丰富的库函数,避免了复杂的子程序编写。,M文件包含两类:命令文件和函数文件。 前者不要求输入参数,也不返回任何参数;而后者可以输入参数,也可以返回参数。命令文件只对工作空间进行操作;而函数文件的变量为局部变量,只有输入、输出的变量被保留在工作空间。,3.4.1命令文件,若要一次执行大量的Matlab命令,可将这些命令编写在一个扩展名为.m的文件中,并在Matlab命令输入窗口键入此文件名即可。 例3.1:分别建立命令文件,将华氏温度f转换为摄氏温度c。 首先建立命令文件并以文件名f2c.m存盘。 clear; %清除工作空间中的变量 f=input(Input Fahrenheit temperature:); c=5*(f-32)/9 然后在MATLAB的命令窗口中输入f2c,将会执行该命令文件,执行情况为: Input Fahrenheit temperature:73 c = 22.7778,3.4.1命令文件,注:f2c.m的第一行以%开头的行是注解,可以使程序易于理解与管理。一般地,第一注解行通常用来简短说明此M文件的功能,使用help f2c命令可查看该注释; 命令窗口输入whos查看工作空间的变量,可以发现执行时所建立的变量全部保留在工作空间中。 一行代码过长时使用符号“”续行符连接,3.4.2函数文件,函数文件 的5个组成部分 函数题头:指函数的定义行,是函数语句的第一行,在该行中将定义函数名、输入变量列表及输出变量列表等。 HI行:指函数帮助文本的第一行,为该函数文件的帮助主题,当使用lookfor命令时,可以查看到该行信息。 帮助信息:这部分提供了函数的完整的帮助信息,包括HI之后至第一个可执行行或空行为止的所有注释语句,通过MATLAB语言的帮助系统查看函数的帮助信息时,将显示该部分。 函数体;指函数代码段,也是函数的主体部分。 注释部分:指对函数体中各语句的解释和说明文本,注释语句是以%引导的。,3.4.2函数文件,例3.2:编写函数文件求半径为r的圆的面积和周长。 函数文件如下: function s,p=fcircle(r) %CIRCLE calculate the area and perimeter of a circle of radii r %r 圆半径 %s 圆面积 %p 圆周长 %2008年3月15日编 s=pi*r*r; p=2*pi*r; 函数调用的一般格式是:输出实参表=函数名(输入实参表) 在命令窗口输入:s,p=fcircle(5) 回车运行将得到: s = 78.5398 p = 31.4159,3.5程序的控制结构,1)数据的输出 MATLAB提供的命令窗口输出函数主要有disp函数,其调用格式为 disp(输出项) 其中输出项既可以为字符串,也可以为矩阵。 2)程序的暂停 暂停程序的执行可以使用pause函数,其调用格式为: pause(n) %延迟n秒 pause %省略延迟时间,直接使用,则将暂停程序,直到用户按 任一键后程序继续执行。 若要强行中止程序的运行可使用如下命令: Ctrl+C,3.5.1顺序结构,1) if-else-end语句的一般形式为: if逻辑判断语句 逻辑值为“真”时执行的语句 else 逻辑值为“假”时执行的语句 end 2) 采用if-else-end语句的嵌套形式为: if逻辑判断语句1 逻辑值1为“真”时的执行语句 elseif逻辑判断语句2 逻辑值2“真”时的执行语句 elseif逻辑判断语句3 else 当以上所有的逻辑值均为假时的执行语句 end,3.5.2选择结构,3) switch-case语句的一般表达形式为: switch选择判断量 Case 选择判断值1 选择判断语句1 case 选择判断值2 选择判断语句2 otherwise 判断执行语句 end,3.5.2选择结构,例3.3 if rand0.5 disp(产生的随机数大于0.5); end 例3.4 function out=piecefun(x) %定义分段函数 if x1 out=x; else if x=4 out=x.2; else out=2x; end end,3.5.2选择结构,Matlab里的循环结构可用forend语句和whileend语句来实现。 1)forend语句 for循环语句是流程控制语句中的基础,使用该循环语句可以以指定的次数重复执行循环体内的语句。 for语句的格式为: for 循环变量=表达式1:表达式2:表达式3 循环体语句 end 其中表达式1的值为循环变量的初值, 表达式2的值为步长, 表达式3的值为循环变量的终值。 步长为1时,表达式2可以省略。,3.5.3循环结构,例3.5 生成长度为10的调和数列。 x=zeros(1,10); %初始化; for i=1:1:10 x(i)=1/i; end 显示x: x x = Columns 1 through 8 1.0000 0.5000 0.3333 0.2500 0.2000 0.1667 0.1429 0.1250 Columns 9 through 10 0.1111 0.1000 以分数形式显示此数列: format rat %控制输出格式 disp(x) %显示 Columns 1 through 5 1 1/2 1/3 1/4 1/5 Columns 6 through 10 1/6 1/7 1/8 1/9 1/10,2)whileend语句,while语句一般用于事先不能确定循环次数的情况。whileend 语句的基本形式为: while 条件表达式 循环体语句组 end 例3.6 接受用户键盘输入,直到输入字符串时程序结束。 x=input(输入一个字符串:); %接受用户键盘输入 while isstr(x) %存入变量x x=input(输入一个字符串:); end,3.6程序的编写技巧,(1)测试程序执行时间 建立程序执行时间有两种方法:一种是使用tic和toc命令,tic用于启动秒表,toc用于停止秒表;另一种是使用能够获取CPU时间的cputime命令。 例3.7建立一个1000*1000的魔方矩阵,使用tic和toc命令。 tic %开始计时 A=magic(1000); %运行程序 toc %结束计时,并显示所耗时间 Elapsed time is 0.812000 seconds. t=cputime; %把cpu时间赋给变量t A=magic(1000); cputime-t %显示前后时间之差,即执行程序所耗时间 ans= 0.7031,3.6程序的编写技巧,2)避免使用循环 能用对向量或矩阵元素的操作来完成的操作,尽量避免使用循环语句。,例3.8 已知 ,当n=100时,求y 的值。 程序如下: y=0; n=100; for i=1:n y=y+1/(2*i-1); end y,在 实际MATLAB编程中,采用循环语句会降低其执行速度,所以前面的程序通常由下面的程序来代替: n=100; i=1:2:2*n-1; y=sum(1./i); y,3.6程序的编写技巧,3) try语句结构,try语句 语句格式为: try 语句组1 catch 语句组2 end,try语句先试探性执行语句组1,如果语句组1在执行过程中出现错误,则将错误信息赋给保留的lasterr变量,并转去执行语句组2。,3.6程序的编写技巧,例3.9:矩阵乘法运算要求两矩阵的维数相容,否则会出错。先求两矩阵的乘积,若出错,则自动转去求两矩阵的点乘。 程序如下: A=1,2,3;4,5,6; B=7,8,9;10,11,12; try C=A*B; catch C=A.*B; end C lasterr %显示出错原因,第四章 MATLAB的符号运算,4.1符号表达式 4.2符号矩阵的创建 4.3因式分解、展开和简化 4.4符号函数的极限 4.5 符号函数的微分 4.5 符号函数的积分 4.6符号代数方程求解 4.7符号微分方程求解,与Wolfram公司(数学软件Mathematica的开发公司)相比,MathWorks公司一直以矩阵计算和强大的数据处理能力见长,而符号计算并不是其强项。直到1993年,MathWorks公司从加拿大的Waterloo Maple公司购买了Maple软件的内核技术,开发了用以进行符号计算的基本符号运算工具箱和扩展符号运算工具箱,从而解决了Matlab在符号计算方面的缺陷。基本符号运算工具箱含有100多个Matlab函数,通过这些函数可以采用Matlab的语法来调用Maple内核.Matlab 7.0的符号运算工具箱,包括符号函数、符号方程的定义、运算、复合、化简,符号矩阵的计算,符号微分、积分,符号代数方程和符号微分方程的求解,符号积分变换和符号特殊函数.,4.1符号表达式,与数值运算的区别 数值运算中必须先对变量赋值,然后才能参与运算。 符号运算无须事先对独立变量赋值,运算结果以标准的符号形式表达。,4.1.1什么是符号运算,4.1.2 符号变量与符号表达式,f = sin(x)+5x f 符号变量名 sin(x)+5x 符号表达式 符号标识 符号表达式一定要用 单引 号括起来matlab才能识别。, 的内容可以是符号表达式,也可以是符号方程。 例: f1=ax2+bx+c 二次三项式 f2= ax2+bx+c=0 方程 f3=Dy+y2=1 微分方程 符号表达式或符号方程可以赋给符号变量,以后调用方便;也可以不赋给符号变量直接参与运算,4.1.2 符号变量与符号表达式,4.1.3 符号表达式的定义,1)使用syms命令操作为: 例4.1syms x y z s t %定义单个符号变量也可x=sym(x),2) 用单引号定义符号表达式。 例4.2 fun=atan(x) %定义符号函数 fun= atan(x),数值矩阵A=1,2;3,4 A=a,b;c,d 不识别 用matlab函数sym创建矩阵(symbolic 的缩写) 命令格式:A=sym( ) 符号矩阵内容同数值矩阵 需用sym指令定义 需用 标识,4.2符号矩阵的创建,例4.3:A = sym(a , 2*b ; 3*a , 0) A = a, 2*b 3*a, 0 这就完成了一个符号矩阵的创建。 注意:符号矩阵的每一行的两端都有方括号,这是与 matlab数值矩阵的一个重要区别。,用字符串直接创建矩阵,模仿matlab数值矩阵的创建方法 需保证同一列中各元素字符串有相 同的长度。,例4.4:A = a,2*b; 3*a, 0 A = a, 2*b 3*a, 0,将数值矩阵转化为符号矩阵 函数调用格式:sym(A) 例4.5: A=1/3,2.5;1/0.7,2/5 A = 0.3333 2.5000 1.4286 0.4000 sym(A) ans = 1/3, 5/2 10/7, 2/5, 符号矩阵与数值矩阵的转换,将符号矩阵转化为数值矩阵 函数调用格式: numeric(A) 例4.6 A = 1/3, 5/2 10/7, 2/5 numeric(A) ans = 0.3333 2.5000 1.4286 0.4000,4.3因式分解、展开和简化,符号表达式的基本运算有合并同类项、表达式展开、因式分解、提取符号表达式的分子和分母、符号表达式的化简、确定符号矩阵的维数。有关函数的调用格式和功能见下表。 collect(s):按默认变量x的次数对符号多项式s合并同类项 collect(s,v):按指定变量v的次数对符号多项式s合并同类项 expand(s):将符号多项式s展开 factor(x):将符号表达式x因式分解 N,D=numden(A):求符号表达式A的分子N和分母D simplify(s):求表达式s的化简形式 m,n=size(A):求符号矩阵A的行数m、列数n,4.4 符号函数的极限,limit(F,x,a) :计算当xa时符号函数表达式F的极限值 例4.7:syms x limit(tan(x)-x)/x3) %求自变量x趋近于0时的极限值 ans= 1/3 limit(x2-1)/(x-1),x,1) %求自变量x趋近于1时的极限值 ans= 2,4.5 符号函数的微分,diff(s) %计算符号表达式s对系统默认自变量的一阶导数 diff(s,n) %计算符号表达式s对系统默认自变量的n阶导数 diff(s,v,n)%计算符号表达式s对指定变量v的n阶导数 例4.8: syms x y=log(log(x); diff(y) %求函数y对自变量x的一阶导数 ans = 1/x/log(x) pretty(ans) %求符号表达式的常规形式 1 - x log(x),4.6 符号函数的积分,int(s):对符号表达式s中的默认自变量求s的不定积分 int(s,v):对符号表达式s中的指定变量v求s的不定积分 int(s,v,a,b):对符号表达式s中的指定变量v在区间a,b上求s的 定积分 例4.9:syms x int(1/x4/sqrt(1+x2) %对默认自变量x求不定积分 ans= -1/3/x3*(1+x2)(1/2)+2/3/x*(1+x2)(1/2) int(1/(1+4*x2),-inf,inf) %在区间-,+ 上求定积分 ans= 1/2*pi,4.7符号代数方程求解,Matlab 7.0中求代数方程的符号解是通过调用solve函数实现的。调用格式一般为: solve(代数方程,未知变量)或x=solve(代数方程,未知变量) 例4.10:求方程组 的解。 syms x y x,y=solve(x-2*y-4,x2-2*x*y+y) x= 4/9 y= -16/9,4.8符号微分方程求解,在Matlab中,用dsolve函数求解微分方程或微分方程组,dsolve函数的输入共有三部分,微分方程、初始条件和自变量。调用格式为: dsolve(微分方程,初始条件,自变量) 微分或导数的输入用Dy,D2y,D3y,来表示一阶导数,二阶导数,三阶导数。如果自变量是系统默认的,则自变量输入部分可省略。dsolve函数的输出部分是该方程(组)的解列表,如果dsolve函数找不到解析解,则系统显示错误信息。,一阶微分方程 例4.11 dsolve(Dx=y,Dy=x,x(0)=0,y(0)=1) ans = x(t) = sin(t), y(t) = cos(t) 二阶微分方程 例4.12 dsolve(D2y=-a2*y,y(0)=1,Dy(pi/a)=0) ans = cos(a*x),例4.13,y=dsolve(D2y+2*Dy+2*y=0,y(0)=1,Dy(0)=0) ans = exp(-x)*cos(x)+exp(-x)*sin(x) ezplot(y) 方程解y(t)的时间曲线图,求该方程的解,第五章 MATLAB绘图,5.1 二维绘图函数 5.2 二维绘图函数的修饰 5.3 三维绘图函数,5.1 二维绘图函数,5.1.1基本绘图函数 plot 2-D曲线绘图 fplot 函数y=f(x)绘图 ezplot 隐函数绘图 5.1.2特殊绘图函数 bar 绘制直方图 polar 绘制极坐标图 hist 绘制统计直方图 stairs 绘制阶梯图 stem 绘制火柴杆图 fill 绘制填充图,5.1.1基本绘图函数,1)plot 2-D曲线绘图 plot的调用格式 plot(x) 缺省自变量绘图格式,x为向量, 以x元素值为纵坐标,以相应元素下标为横坐标绘图 plot(x,y) 基本格式,以y(x)的函数关系作出直角坐标图,如果y为nm的矩阵,则以x 为自变量,作出m条曲线 plot(x1,y1,x2,y2) 多条曲线绘图格式 plot(x,y,s) 开关格式,开关量字符串s设定曲线颜色和绘图方式,例5.1:x=0, 0.48,0.84,1,0.91,0.6,0.14 x1, x2, x3, x4, x5, x6, x7, plot (x),例5.2:t=0:pi/100:2*pi; y=sin(t);y1=sin(t+0.25);y2=sin(t+0.5); plot(t,y,t,y1,t,y2),y,y1,y2,例5.3:y=sin(t);y1=sin(t+0.25);y2=sin(t+0.5); y3=cos(t);y4=cos(t+0.25);y5=cos(t+0.5); plot(t,y,y1,y2,y3,y4,y5),例5.4:y3=cos(t);y4=cos(t+0.25);y5=cos(t+0.5); plot(t,y3);hold on; plot(t,y4); plot(t,y5);,可任意设置颜色与线型,例5.5:t=0:pi/100:2*pi; y=sin(t);y1=sin(t+0.25);y2=sin(t+0.5); plot(t,y,r-,t,y1,g:,t,y2,b*),S的标准设定值如下:,字母 颜色 标点 线型 y 黄色 点线 m 粉红 圈线 c 亮蓝 线 r 大红 字线 g 绿色 实线 b 蓝色 星形线 w 白色 : 虚线 k 黑色 (-) 点划线,fplot的调用格式: fplot(fun,lims):绘制函数fun在x区间lims=xmin xmax的函数图。 fplot(fun,lims,corline):以指定线形绘图。 x,y=fplot(fun,lims):只返回绘图点的值,而不绘图。用plot(x,y)来绘图。,2)fplot 函数y=f(x)绘图,例5.6:fplot(sin(x),tan(x),cos(x),2*pi*-1 1 -1 1) fplot(humps,0 1,rp),3)ezplot 隐函数绘图,MATLAB提供了一个ezplot函数绘制隐函数图形,下面介绍其用法。 (1) 对于函数f = f(x),ezplot函数的调用格式为: ezplot(f):在默认区间-2x2绘制f = f(x)的图形。 ezplot(f, a,b):在区间axb绘制f = f(x)的图形。 (2) 对于隐函数f = f(x,y),ezplot函数的调用格式为: ezplot(f):在默认区间-2x2和-2y2绘制f(x,y) = 0的图形。 ezplot(f, xmin,xmax,ymin,ymax):在区间xminxxmax和yminyymax绘制f(x,y) = 0的图形。,3)ezplot 隐函数绘图,ezplot(f, a,b):在区间axb和ay b绘制f(x,y) = 0的图形。 (3) 对于参数方程x = x(t)和y = y(t),ezplot函数的调用格式为: ezplot(x,y):在默认区间0t2绘制x=x(t)和y=y(t)的图形。 ezplot(x,y, tmin,tmax):在区间tmin t tmax绘制x=x(t)和y=y(t)的图形。 例5.7: ezplot(8*cos(t),4*sqrt(2)*sin(t),0,2*pi),5.1.2特殊绘图函数,bar 绘制直方图 polar 绘制极坐标图 hist 绘制统计直方图 stairs 绘制阶梯图 stem 绘制火柴杆图 fill 绘制填充图 pie 饼图 compass 复数向量图(罗盘图),在MATLAB中,二维统计分析图形很多,常见的有条形图、阶梯图、杆图和填充图等,所采用的函数分别是:,rose 绘制统计扇形图 comet 绘制彗星曲线 errorbar 绘制误差棒图 feather 复数向量投影图(羽毛图) quiver 向量场图 area 区域图 convhull 凸壳图 scatter 离散点图,5.1.2特殊绘图函数,例5.8:分别以条形图、阶梯图、杆图和填充图形式绘制曲线y=2sin(x)。 程序如下: x=0:pi/10:2*pi; y=2*sin(x); subplot(2,2,1);bar(x,y,g); title(bar(x,y,g);axis(0,7,-2,2); subplot(2,2,2);stairs(x,y,b); title(stairs(x,y,b);axis(0,7,-2,2); subplot(2,2,3);stem(x,y,k); title(stem(x,y,k);axis(0,7,-2,2); subplot(2,2,4);fill(x,y,y); title(fill(x,y,y);axis(0,7,-2,2);,5.2 二维绘图函数的修饰,5.2.1图形窗口的加注 将标题、坐标轴标记、网格线及文字注 释加注到图形上,这些函数为: title 给图形加标题 xlable 给x轴加标注 ylable 给y轴加标注 text 在图形指定位置加标注 gtext 将标注加到图形任意位置 grid on(off) 打开、关闭坐标网格线 legend 添加图例 axis 控制坐标轴的刻度,t=0:0.1:10 y1=sin(t);y2=cos(t);plot(t,y1,r,t,y2,b-); x=1.7*pi;1.6*pi; y=-0.3;0.8; s=sin(t);cos(t); text(x,y,s); title(正弦和余弦曲线); legend(正弦,余弦) xlabel(时间t),ylabel(正弦、余弦) grid axis square,例5.9:,2,4,6,8,10,时间t,axis的用法还有: axis(xmin xmax ymin ymax) 用行向量中给出的值设定坐标轴的最大和最小值。 如axis (-2 2 0 5) axis(equal) 将两坐标轴设为相等 axis on(off) 显示和关闭坐标轴的标记、标志 axis auto 将坐标轴设置返回自动缺省值,5.2.2图像窗口的分割与显示,单窗口多曲线分图绘图 subplot(m,n,p) m 行n 列p 绘图序号 例5.10 例5.11 多窗口绘图 figure(n) 创建窗口函数,n为窗口顺序号。 例5.12,subplot(1,3,1); plot(t,y) subplot(1,3,2); plot(t,y3) subp

温馨提示

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

评论

0/150

提交评论