自第二章研究生仿真课MATLAB编程基础

上传人:工**** 文档编号:578548812 上传时间:2024-08-24 格式:PPT 页数:121 大小:1.46MB
返回 下载 相关 举报
自第二章研究生仿真课MATLAB编程基础_第1页
第1页 / 共121页
自第二章研究生仿真课MATLAB编程基础_第2页
第2页 / 共121页
自第二章研究生仿真课MATLAB编程基础_第3页
第3页 / 共121页
自第二章研究生仿真课MATLAB编程基础_第4页
第4页 / 共121页
自第二章研究生仿真课MATLAB编程基础_第5页
第5页 / 共121页
点击查看更多>>
资源描述

《自第二章研究生仿真课MATLAB编程基础》由会员分享,可在线阅读,更多相关《自第二章研究生仿真课MATLAB编程基础(121页珍藏版)》请在金锄头文库上搜索。

1、MATLAB教程基础准备及入门基础准备及入门 -电气工程系研究生总体内容:1、安装、启动(略)2、MATLAB指令窗口操作及规则(适用于各种版本)3、MATLAB最常用的五个交互界面:历史指令窗、当前目录浏览器、工作空间浏览器、变量编辑器、M文件编辑器4、MATLAB的帮助体系和求助方法MATLAB教程基础准备及入门之基础准备及入门之窗口操作及规则-电气工程系研究生一、窗口MATLAB教程基础准备及入门基础准备及入门 -电气工程系研究生帮助系统及其使用帮助系统及其使用常用帮助指令常用帮助指令 1、函数搜索指令(知道具体函数名,不知如何使用)、函数搜索指令(知道具体函数名,不知如何使用)指令窗口

2、帮助系统(在指令窗口显示帮助信息) help 列出所有函数分组名列出所有函数分组名 help TopicName 列出指定名称函数组中的所有函数列出指定名称函数组中的所有函数 help FunName 给出指定名称函数的使用方法给出指定名称函数的使用方法打开帮助系统显示帮助信息 helpwin 列出所有函数分组名列出所有函数分组名 helpwin TopicName 列出指定名称函数组中的所有函数列出指定名称函数组中的所有函数 helpwin FunName 给出指定名称函数的使用方法给出指定名称函数的使用方法更详尽的帮助信息 doc ToolboxName 列出指定名称工具包中的所有函数名列

3、出指定名称工具包中的所有函数名 doc FunName 给出指定名称函数的使用方法给出指定名称函数的使用方法 操作举例操作举例:barMATLAB教程基础准备及入门基础准备及入门窗口操作及规则 -电气工程系研究生、二、运行最简单的计算器使用方法最简单的计算器使用方法【例一】在指令窗做如下操作MATLAB运算符是各种计算程序中常见的习惯符号一条指令结束后,必须按回车键,该指令才会执行不含赋值号的表达式的结果赋给MATLAB的一个默认变量ansMATLAB教程基础准备及入门基础准备及入门窗口操作及规则 -电气工程系研究生、二、运行【例二】指令续行3个或3个以上的连续黑点表示续行包含赋值号=指令执行

4、后,变量S被保存到MATLAB的工作空间(Workspace)中备用。如果不用clear指令清除或重新赋值,则会一直保存在空间中,直到本MATLAB指令窗口关闭为止。MATLAB教程基础准备及入门基础准备及入门窗口操作及规则 -电气工程系研究生二、运行【例三】逗号,分号;的使用以上两种情况都是合法的,左边使用逗号将两个表达式分开,回车后xy的结果都显示,右边使用分号,表示x的结果不显示,只显示y的结果MATLAB教程基础准备及入门基础准备及入门窗口操作及规则 -电气工程系研究生二、运行常用标点的意义空格空格输入量之间的分隔符(命令窗口会忽略变量之间的这些空格),输入数组元素之间的分隔符,逗号逗

5、号要显示计算结果与其他命令之间的分隔;输入量之间的分隔符或数组元素之间的分隔符. 点点在数值计算中,可以作为小数点来使用;在数组运算过程中,可作为元素运算的标示;分号分号在命令行末尾表示在计算结束后不显示计算结果;或在输入数组时,作为数组之间的分隔符:冒号冒号在生成一维数组时,可作为分隔符;用作单下标引用时的全部元素构成的全部数列;循环运算过程中的分隔符%百分号百分号位于命令行的开头,表示该行为注释行单引号对单引号对用于定义字符串()圆括号圆括号 改变运算过程中的优先级次序;在函数调用时使用;作为数组的索引方括号方括号 定义矩阵花括号花括号定义单元数组;图形中被控特殊字符括号-下划线下划线定义

6、变量、函数或文件时使用的连字符;图形中被控下脚标的签到符号续行号续行号当输入命令窗口的命令较长时,可在一行中未完成的命令后输入三个以上的点号,在下一行继续输入该命令的剩余部分,完成较长命令的输入与执行。“at”号号放在函数名称前,形成函数句柄;作为匿名函数的前导符!感叹号感叹号调用操作系统运算MATLAB教程基础准备及入门基础准备及入门窗口操作及规则 -电气工程系研究生、二、运行【例四】控制键方向键的使用在命令出现错误或需要修改时,可点击或调出以前输入的命令,进行修改并回车,回车时可在该行任何位置,不必将光标移至句末。 还可以只输入命令行的少数几个字符,然后使用可以将最后一个以这几个字符开头的

7、命令行调出。MATLAB教程基础准备及入门基础准备及入门窗口操作及规则 -电气工程系研究生、二、运行常用的命令行控制键: PgUp PgDn Home End Del删左 Backspace 删右 Esc删整行MATLAB教程基础准备及入门基础准备及入门窗口操作及规则 -电气工程系研究生、二、运行数值、变量和表达式数值、变量和表达式合法的数值表达:合法的数值表达:3 -99 0.001 1.3e-3 4.5e33范围:范围: 10-30810308变量名规则:变量名规则: * * 区分大小写区分大小写 * * 第一个为英文字母,最多包含第一个为英文字母,最多包含6363个字符个字符 * * 不

8、得包含空格、标点、运算符,可包含下连符如不得包含空格、标点、运算符,可包含下连符如my_var_2011my_var_2011是合法的是合法的 * * 禁忌:不与禁忌:不与MATLABMATLAB关键词(关键词(for,if/else,endfor,if/else,end等等) )同名,尽量不与同名,尽量不与MATLABMATLAB自用自用的变量名(如的变量名(如eps,pieps,pi等)、函数名(如等)、函数名(如sin,eigsin,eig等)、文件夹名(如等)、文件夹名(如rtw,toolboxrtw,toolbox等)相同等)相同 * * MATLABMATLAB提供两个判断指令用于

9、判断所用变量名是否犯忌提供两个判断指令用于判断所用变量名是否犯忌 iskeyword UserNameiskeyword UserName 运行结果为运行结果为0 0表示不同于关键字表示不同于关键字 exist UserNameexist UserName 运行结果为运行结果为0 0表示不同于自用变量名、函数名、文件夹名表示不同于自用变量名、函数名、文件夹名MATLAB教程基础准备及入门基础准备及入门窗口操作及规则 -电气工程系研究生、二、运行默认的数学常数默认的数学常数 eps:浮点相对精度exp:自然对数的底数ei或j:基本虚数单位inf或Inf:无限大,例如1/0nan或NaN:非数值(

10、Notanumber),例如0/0pi:圆周率p(=3.1415926.)realmax:系统所能表示的最大数值realmin:系统所能表示的最小数值nargin:函数的输入引数个数nargout:函数的输出引数个数lasterr:存放最新的错误信息lastwarn:存放最新的警告信息MATLAB教程基础准备及入门基础准备及入门 -电气工程系研究生MATLAB教程基础准备及入门基础准备及入门 -电气工程系研究生MATLAB教程基础准备基础准备运行 -电气工程系研究生向量运算向量运算向量的构造在MATLAB中“:”是一个重要的字符,如x1:4即产生一个1-4单位增量的行向量MATLAB教程基础准

11、备基础准备 运行-电气工程系研究生也可以产生单位增量小于1的行向量,方法是把增量放在起始和结尾量的中间,并用冒号分割开来。如:MATLAB教程基础准备基础准备 运行-电气工程系研究生也可以产生单位增量为负数的行向量,如MATLAB教程基础准备基础准备 运行-电气工程系研究生符号“:”也可以用来产生简易的表格。为了产生纵向表格形式,首先要用它产生行向量,然后进行转置再利用所得的列向量计算出另一列向量,即可合成有两列的矩阵。例如:MATLAB教程基础准备基础准备 运行-电气工程系研究生下标下标nMATLAB的下标具有很重要的功能,可以在对矩阵的行、列子矩阵处理时使用,也可以用来产生向量。使用下标和

12、向量,会使运算更为清晰和方便。单个的矩阵元素可在括号中用下标来表达。例如,已知n其中元素A(3,3)9,A(1,3)=4,A(3,1)3等等。若用语句A(3,3)A(1,3)+A(3,1),利用原矩阵的元素产生新元素(即为A(3,1)+A(1,3)7)替代A矩阵中第三行第三列的元素A(3,3),则产生的新的A矩阵为MATLAB教程基础准备基础准备 运行-电气工程系研究生MATLAB教程基础准备基础准备 运行-电气工程系研究生n如果v2:2:n;W31416,此时A(v,w)是合法的,但并不排除出问题的可能性。n进一步分析,A(:)在赋值语句的右边,表示将A的所有元素在一个长的列向量中展成串,如

13、A12;34;56,bA(:)则结果为MATLAB教程基础准备基础准备 运行-电气工程系研究生n在赋值语句左边A(:)可以重新组成与刚才的A具有相同阶数的矩阵,这相当于在原来的A没有被清除的情况下,用新的元素置换,实际上起着一种提供格式的作用。例如在上例的基础上n(a在前面例子中的规格已经为3*2的矩阵)体会以下语句体会以下语句:B1=(1:2:end,:)%提取A矩阵全部的奇数行、所有列B2=A(3,2,1,2,3,4)%提取A矩阵3,2,1行、2,3,4列构成子矩阵B3=A(:,end:-1:1)%将A矩阵左右翻转,即最后一列排在最前MATLAB教程基础准备基础准备三、基本数学运算 -电气

14、工程系研究生矩阵的运算矩阵的运算1、矩阵的代数运算、矩阵的代数运算B=A转置X=AB(AX=B)左除X=B/A(XA=B)右除C=A+BC=A-BC=A*BB=fliplr(A)左右翻转(flipleftright)C=flipud(A)上下翻转(flipupdown)D=rot90(A)逆时针旋转90度F=Ax乘方C=A.*B点运算(矩阵相应元素之间直接进行乘法Cij=AijBij)X.5x中每个元素取5次方A.A每个元素取aijaijMATLAB教程基础准备基础准备 三、三、基本数学运算 -电气工程系研究生 2、逻辑运算、逻辑运算A&B与如果两矩阵相应元素均非0则给结果元素为1,否则为0A

15、|B或如果两矩阵相应元素均为0则给结果元素为0,否则为1A非若相应元素为0,则结果为1,否则为0xor(A,B)异或如果相应两元素一个为0,一个非0,则结果为0,否则为1可在MATLAB中进行试用 MATLAB教程基础准备基础准备 三、三、基本数学运算 -电气工程系研究生矩阵的比较运算矩阵的比较运算 C=AB当A和B矩阵满足aijbij时,cij=1,否则为0=(不等于)MATLAB还提供了一些特殊函数:find()查询出满足某关系的数组下标数组下标(MATLAB以逐列顺序安排数组下标,即先构成列向量,再分配数组下标)如:find(isnan(a)查找a中为nan的各元素下标。MATLAB教程

16、基础准备基础准备 三、三、 基本数学运算 -电气工程系研究生查询函数all()如all(a=5)当a中的某列元素全大于等于5时,结果元素为1,否则为0any()如any(a=5)当某列中含有大于等于5的元素时,结果为1,否则为0若想判定一个矩阵的所有元素是否都大于等于5时,则可写成all(a(:)=5)MATLAB教程基础准备基础准备 基本数学运算 -电气工程系研究生解析结果的化简与变换解析结果的化简与变换符号运算工具箱可用于推导数学公式,但结果有时不是最简形式,或不是用户期望的形式。MATLAB提供了一些化简函数:simple()得出各中方法中自动选择最简格式collect()函数合并同类项

17、numden()提取多项式的分子和分母sincos()进行三角函数的化简另外还有一个很有用的变量替换函数sub()MATLAB教程基础准备基础准备 基本数学运算 -电气工程系研究生例:MATLAB教程基础准备基础准备 基本数学运算 -电气工程系研究生n基本数据变换和数论函数基本数据变换和数论函数 floor()n=floor(x)将x中元素按-方向取整ceil()n=ceil(x)将x中元素按+方向取整round()n=round(x)将x中元素按最近的整数取整fix()n=fix(x)将x中元素按离0近的方向取整rat()n,d=rat(x)将x中元素变换成最简有理数,n和d分别为分子和分母

18、矩阵rem()B=rem(A,C)A中元素对C中元素求模得出的余数gcd()k=gcd(n,m)求取两个整数n和m的最大公约数lcm()k=lcm(n,m)求取两个整数n和m的最小公倍数factor()factor(n)对n进行质因数分解isprime()v1=isprime(v)判定向量v中的各个整数值是否为质数,若是则v1向量相应的值置1,否则为0MATLAB教程基础准备基础准备 基本数学运算 -电气工程系研究生例MATLAB教程基础准备基础准备 基本数学运算 -电气工程系研究生例求pq的最小公倍数和最大公约数%定义符号变量sMATLAB教程程序设计程序设计 M文件文件 -电气工程系研究生

19、MATLAB命令执行方式:1)交互式命令执行方式(逐条解释)2)M文件的程序执行方式(扩展名文件的程序执行方式(扩展名.m的以的以 matlab语言编写的文件)语言编写的文件)n掌握建立和执行M文件的方法n掌握利用if语句、switch语句实现选择结构的方法n掌握利用for语句while语句实现循环结构的方法n熟悉利用向量运算来代替循环操作的方法n掌握定义和调用MATLAB函数的方法MATLAB教程程序设计程序设计 M文件文件 -电气工程系研究生M文件是文本文件,可以用任何编辑程序来建立和编辑,默认用MATLAB提供的文本编辑器打开进行编辑。一、M文件的建立和打开(三种方法)建立:命令按钮操作

20、:点击MATLAB“新建”(NewM-file)菜单操作:FileNewM-file命令操作:命令窗口键入editM文件保存位置一般是MATLAB默认的工作目录work,如果要存到其它目录,则应该将该目录设定为当前目录或将其加到搜索路径中。打开M文件:命令按钮操作菜单操作命令操作(命令窗口键入:edit文件名)在当前目录窗口左键双击文件名打开MATLAB教程程序设计程序设计 M文件文件 -电气工程系研究生二、二、M文件的分类文件的分类根据调用方式的不同分为两类:命令命令(脚本)文件脚本)文件(ScriptFile)函数文件函数文件(FunctionFile),扩展名均为.mScript Fil

21、en命令(脚本)文件没有输入参数,也不返回输出参数,而函数文件可以带输入参数,也可返回输出函数n命令(脚本)文件对MATLAB工作空间中的变量进行操作,文件中所有命令的执行结果也完全返回到工作空间中,而函数文件中定义的变量为局部变量,当函数文件执行完毕时,这些变量被清除n命令(脚本)文件可以直接运行,在MATLAB命令窗口输入命令文件的名字就会顺序执行命令文件中的命令,而函数文件不能直接运行,需要要以函数调用的方式来调用它MATLAB教程程序设计程序设计 M文件文件 -电气工程系研究生【例一】建立一个M文件,其功能是:用两个实变量R、M生成复变量RM。做法:首先建立命令文件并以文件名setco

22、mp.m保存在当前目录下clearR=1,2,3;4,5,6;M=11,12,13;14,15,16;RMR+i*M然后在MATLAB命令窗口中输人setcomp,则会执行该m文件,结果为RM=1.0000+11.0000i2.0000+12.0000i3.0000+13.0000i4.0000+14.0000i5.0000+15.0000i6.0000+16.0000i调用该命令文件时,不用输入参数,也没有输出参数,文件自身建立需要的变量。当文件执行完毕后,可以用命令whos查看工作空间中的变量,R、M、RM仍保留在空间中。MATLAB教程程序设计程序设计 M文件文件 -电气工程系研究生【例

23、二】建立一个函数文件fsetcomp.mfunctionRM=fsetcomp(R,M)RM=R+i*M;然后在MATLAB的命令窗口调用该函数文件:clear;a=1,2,3;4,5,6;b=11,12,13,14;15,16,1,18;c=fsetcomp(a,b)输出结果为:c=1.0000+11.0000i2.0000+12.0000i3.0000+13.0000i4.0000+14.0000i5.0000+15.0000i6.0000+16.0000i调用该函数文件时,既有输入参数,又有输出参数。当函数调用完毕后,可以用命令whos查看工作空间中的变量,这时会发现函数参数R、M、RM

24、未被保留在空间中,而a、b、c保留在空间中。MATLAB教程程序设计程序设计 M文件文件 -电气工程系研究生例三编制M函数文件mean1.m,计算1-99的平均数第一步:第二步:保存为mean1.m第三步:在命令窗口输入MATLAB教程程序设计程序设计 程序控制结构程序控制结构 -电气工程系研究生任何程序都由三种基本控制结构三种基本控制结构组成:顺序结构、选择结构、循环结构顺序结构、选择结构、循环结构。一、顺序结构一、顺序结构(一般涉及数据的输入、数据的计算或处理、数据的输出等)1、数据的输入input函数(用于从键盘输入数据),该函数调用格式:h=input(提示信息,选项);提示信息:字符

25、串,提示用户输入什么样的数据。例如,从键盘输入A矩阵,可以采用下面的命令完成:h=input(输入A矩阵:);执行语句时,屏幕上显示提示信息”输入A矩阵:”,然后等待用户键入按MATLAB规定格式输入A矩阵的值。如果在该函数中采用“s”选项,则允许输入一个字符串。如想输入一个人的姓名,可采用命令:Xm=input(whatsyourname?,s);MATLAB教程程序设计程序设计 程序控制结构程序控制结构 -电气工程系研究生2、数据的输出MATLAB提供的命令窗口输出函数主要有disp函数,调用格式为disp(输出项)其中:输出项既可以为字符串,也可以为矩阵,如A=Hello,World!;

26、disp(A)输出为Hello,World!又如:A=1,2,3;4,5,6;7,8,9;disp(A)输出为123456789(disp函数显示矩阵时不显示函数名,不留空行)MATLAB教程程序设计程序设计 程序控制结构程序控制结构 -电气工程系研究生【例一】求方程ax2+bx+c=0的根程序:a=input(a=?);b=input(b=?);c=input(c=?);d=b*b-4*a*c;x=(-b+sqrt(d)/(2*a),(-b-sqrt(d)/(2*a);disp(x1=,num2str(x(1),x2=,num2str(x(2);%num2strConvertnumberto

27、string程序输出为a=?6b=?1c=?3x1=-0.33333,x2=-1.5MATLAB教程程序设计程序设计 程序控制结构程序控制结构 -电气工程系研究生二、选择结构二、选择结构1、if语句a)单分支if语句语句调用格式为:if条件语句块endMATLAB教程程序设计程序设计 程序控制结构程序控制结构 -电气工程系研究生b)双分支if语句语句调用格式为if条件语句块1else语句块2endMATLAB教程程序设计程序设计 程序控制结构程序控制结构 -电气工程系研究生c)多分支if语句语句调用格式为if条件语句块1elseif语句块2elseif语句块nelse语句块n+1endMATL

28、AB教程程序设计程序设计 程序控制结构程序控制结构 -电气工程系研究生2、switch语句(根据表达式的取值不同,分别执行不同的语句)调用格式为switch表达式case结果表1语句块1case结果表n语句块notherwise语句块n+1endswitch子句后的表达式应为一个标量或一个字符串,case子句后的结果即可为标量或字符串,也可为一个将多个结果用大括号括起来的单元数据(cell)。如果case后的结果为一个单元数据,则表达式的值等于该单元数据中的某个元素时,执行相应语句组。MATLAB教程程序设计程序设计 程序控制结构程序控制结构 -电气工程系研究生三、循环结构三、循环结构(按给定

29、条件重复执行指定语句)MATLAB提供了两种语句:for语句和while语句1、for语句的格式为for循环变量=表达式1:表达式2:表达式3循环体语句end其中,表达式1的值为循环变量初值,表达式2的值为步长,表达式3的值为循环变量的终值。步长为1时,表达式2可以省略。MATLAB教程程序设计程序设计 程序控制结构程序控制结构 -电气工程系研究生【例】一个3位整数各位数字的立方和等于该数本身则称该数为水仙花数。输出全部的水仙花数。程序如下:shu=%用于存放结果,先赋空值form=100:999m1=fix(m/100);%求m的百位数字m2=rem(fix(m/10),10);%求m的十位

30、数字m3=rem(m,10);%求m的个位数字ifm=m1*m1*m1+m2*m2*m2+m3*m3*m3shu=shu,m%存入结果endendshu程序执行结果:shu=153370371407MATLAB教程程序设计程序设计 程序控制结构程序控制结构 -电气工程系研究生【例】已知y=1-1/2+1/3-1/4+1/5-1/100,求y的值,程序如下:y=0;n=100;fori=1:ny=y+(-1)(i-1)/i;enddisp(y)程序执行结果为y=0.6882上两例中,for语句的循环变量都是标量,与其他高级语言的循环语句等价。而MATLAB中循环变量还可以是一个列向量,则更一般调

31、用格式为:for循环变量=矩阵表达式循环体语句endMATLAB教程程序设计程序设计 程序控制结构程序控制结构 -电气工程系研究生【例】求矩阵各行的和,程序如下:s=0;a=12,13,14;15,16,17;18,19,20;21,22,23;fork=as=s+k;enddisp(s)该程序执行结果:39485766MATLAB教程程序设计程序设计 程序控制结构程序控制结构 -电气工程系研究生2、While语句While语句的调用格式为while(条件)循环体语句end其执行过程为:若条件成立,则执行循环体语句,执行后再判断条件是否成立,如不成立则跳出循环。MATLAB教程程序设计程序设计

32、 函数文件函数文件 -电气工程系研究生函数文件函数文件函数文件是另一种形式的M文件,每一个函数文件都定义一个函数,MATLAB提供的标准函数大部分是由函数文件定义的。一、函数文件的基本结构一、函数文件的基本结构函数文件由function语句引导,基本结构为function输出形参表=函数名(输入形参表)function返回变量列表=函数名(输入变量列表)注释说明部分注释说明语句段,由%引导函数体语句输入、返回变量格式的检测函数体语句其中,以function开头的一行为引导行,表示该M文件是一个函数文件。函数名的命名规则与变量名相同。输入形参为函数的输入参数,输出形参为函数的输出参数。当输出形参

33、多于一个时,则应该用方括号括起来。MATLAB教程程序设计程序设计 函数文件函数文件 -电气工程系研究生说明说明(1)函数文件名通常由函数名再加上扩展名.m组成,不过函数文件名与函数名也可以不同。当两者不同时,MATLAB将忽略函数名而确认函数文件名,调用时使用函数文件名。不过最好两者一致,以免出错。(2)注释说明包括三部分内容紧随函数文件引导行之后以%开头的第一注释行。一般包括大写的函数文件名和函数功能简要描述,供lookfor关键词查询和help在线帮助用。第一注释行及之后连续的注释行。通常包括函数输入输出参数的含义及调用格式说明等信息,构成全部在线帮助文本。 与在线帮助文本相隔一空行的注

34、释行。包括函数文本编写和修改的信息,如作者、修改日期、版本等内容,用于软件档案管理。 (3)如果在函数文件中插入return语句,则执行到该语句就结束函数的执行,程序流程转至调用该函数的位置。通常,在函数文件中也可不使用return语句,这时在被调用函数执行完成后自动返回。MATLAB教程程序设计程序设计 函数文件函数文件 -电气工程系研究生从系统的角度来说,MATLAB函数是一个变量处理单元,它从主调函数接收变量,对之进行处理后,将结果返回到主调函数中,除了输入和输出变量外,其他在函数内部产生的所有变量都是局部变量,在函数调用结束后这些变量均将消失。输入和返回变量的实际个数分别由nargin

35、和nargout两个MATLAB保留变量来给出,只要进入该函数,MATLAB就将自动生成这两个变量。MATLAB教程程序设计程序设计 函数文件函数文件 -电气工程系研究生【例】编写求一个向量之和及平均值的函数文件:functions,m=fvector(v)%VECTORfvector.mcalculatessumandmeanofavector%v向量%s和%m平均值%2008年11月10日编m,n=size(v);if(m1&n1显然,求n!需要求(n-1)!,这时可采用递归调用。递归调用函数文件factor.m如下:functionf=factor(n)ifnpentagramosqua

36、rediamondhexagram分别为星号、点号、叉号、五角星、圆圈、六角形、这些选项也可以进行组合,例如要想绘制红色的点划线,且每个转折点用五角星表示,则选项可以进行如下组合r-.pentagram hold on、 hold off 、grid on 、grid off 、title() 、xlabel() 、ylabel() 另外也可使用另外也可使用line()命令绘制曲线,调用格式与命令绘制曲线,调用格式与plot()完全一致,不同的是完全一致,不同的是line()不更新现有坐标系,可在当前图形上直接叠加曲线不更新现有坐标系,可在当前图形上直接叠加曲线MATLAB教程程序设计程序设计

37、 图形绘制图形绘制 -电气工程系研究生例:图示复数z1=4+3i,z2=1+2i的和(其中shg:showgraphwindow)MATLAB教程程序设计程序设计 图形绘制图形绘制 -电气工程系研究生其他二维图形绘制语句(仅举少数)其他二维图形绘制语句(仅举少数) polar(x,y)极坐标图极坐标图 hist(y,n)直方图直方图 stairs(x,y)阶梯图形阶梯图形loglog(x,y)对数图对数图注:注:xy分别表示横轴和纵坐标绘图数据。分别表示横轴和纵坐标绘图数据。 MATLAB可以将一个图形窗口分割成若干个小的区域,分别绘制不同的图形:subplot(m,n,k)表示将图形窗口分割

38、成m*n个区域,而k为所需绘制图形区域的编号例如MATLAB教程程序设计程序设计 图形绘制图形绘制 -电气工程系研究生例MATLAB教程程序设计程序设计 图形绘制图形绘制 -电气工程系研究生隐函数绘制及应用隐函数绘制及应用隐函数即满足f(x,y)=0方程的x,y之间的关系式,不求出x,y之间的显式关系式,可用ezplot()函数直接绘制隐函数曲线,调用格式为ezplot(Fun,xm,Xm)其中Fun为隐函数表达式,xm,xM为用户选择的自变量范围,若省略,则取默认区间(-2pi,2pi)例例 MATLAB教程程序设计程序设计 图形绘制图形绘制 -电气工程系研究生三维曲线三维曲线plot()可

39、扩展到三维中,plot3(),其调用格式为:plot3(x,y,z) plot3(x1,y1,z1,选项1,x2,y2,选项2,xm,ym,选项m)其中选项与二维完全一致。类似地,三维中也提供了其他三维曲线绘制函数,如stem3(),bar3()例:MATLAB教程程序设计程序设计 图形绘制图形绘制 -电气工程系研究生例MATLAB教程程序设计程序设计 图形绘制图形绘制 -电气工程系研究生三维曲面绘制三维曲面绘制若z=f(x,y),则可绘制出该函数的三维曲面图。首先要调用meshgrid()函数生成网格矩阵数据x和y,从而可以按函数公式用点运算的方式计算出z矩阵,之后就可以用mesh()或su

40、rf()等函数进行三维图形绘制。具体函数调用格式为:x,y=meshgrid(v1,v2)%生成网格数据z=,如z=x.*y%计算二元函数的z矩阵surf(x,y,z)或mesh(x,y,z)%mesh绘制网格图,surf绘制表面图其中,v1和v2为x和y轴的分隔方式。MATLAB还提供了其他种类的三维绘图方式:surfc()带等高线曲面surf1()带光照曲面waterfall()瀑布型曲面contour3()等高线三维图形MATLAB教程程序设计程序设计 图形绘制图形绘制 -电气工程系研究生例:z=f(x,y)=(x2-2x)e-x2-y2-xy假设横坐标轴从-3开始终止于3,步距为0.1

41、,纵坐标-2-2,步距0.1(即坐标网格分割)则,用MATLAB绘图步骤:MATLAB教程程序设计程序设计 图形绘制图形绘制 -电气工程系研究生MATLAB教程程序设计程序设计 图形绘制图形绘制 -电气工程系研究生MATLAB教程程序设计程序设计 图形绘制图形绘制 -电气工程系研究生MATLAB教程程序设计程序设计 图形绘制图形绘制 -电气工程系研究生如果不设置等高线条数(从图中可看出系统默认的数值偏小,等高线稀疏)MATLAB教程程序设计程序设计 图形绘制图形绘制 -电气工程系研究生三维图形视角设置三维图形视角设置MATLAB 三维图形显示提供了修改视角的功能(两种方法)三维图形显示提供了修

42、改视角的功能(两种方法) 第一种:使用图形窗口工具栏中提供的按钮(如图所示)第一种:使用图形窗口工具栏中提供的按钮(如图所示) 点击按钮,鼠标箭头变为带箭头圆环,此时在图形上按住鼠标左键进行拖动,即可使图形转动。MATLAB教程程序设计程序设计 图形绘制图形绘制 -电气工程系研究生第二种:采用view()函数有目的地进行旋转。格式为view(,)方位角定义为视点在xoy平面投影点与y轴负方向之间的夹角,默认值为-37.5仰角定义为视点和xoy平面的夹角,默认值为30MATLAB教程程序设计程序设计 图形绘制图形绘制 -电气工程系研究生例如以方位角80,仰角10观察MATLAB教程程序设计程序设

43、计 图形绘制图形绘制 -电气工程系研究生继续输入view(0,90)MATLAB教程程序设计程序设计 现代科学运算现代科学运算 -电气工程系研究生这里的运算,不仅是指数值运算,还包含解析运算。MATLAB起源于线性代数的数值运算,在其长期发展过程中,形成了微分方程数值解法、最优化技术、数据处理、数理统计等诸多分支,并成功引入了符号运算功能,使得公式推导成为可能。线性代数问题的线性代数问题的MATLAB求解求解 1 矩阵的参数化分析(与矩阵有关的量的计算)矩阵的参数化分析(与矩阵有关的量的计算) 矩阵的行列式(矩阵的行列式(determinant) det() 矩阵的迹矩阵的迹(trace) t

44、race() 矩阵的秩(矩阵的秩(rank) rank() 矩阵的范数(矩阵的范数(norm) norm(A),norm(A,1),norm(A,inf) 矩阵的特征多项式、特征方程与特征根矩阵的特征多项式、特征方程与特征根(eigenvalues) p=poly()%p为行向量,为矩阵的降幂排列的特征多项式系数多项式及多项式矩阵的求值多项式及多项式矩阵的求值(即求a1xn+a2xn-1+anx+an+1的值)若x为一个数值则用c=polyval(a,x)若x为一个矩阵则用c=polyvalm(a,x)MATLAB教程程序设计程序设计 现代科学运算现代科学运算 -电气工程系研究生矩阵的特征值问

45、题矩阵的特征值问题 V,D=eig(A)矩阵指数矩阵指数eA和指数函数和指数函数eAt expm(A)例MATLAB教程程序设计程序设计 现代科学运算现代科学运算 -电气工程系研究生例含有变量的Vandermonde矩阵的特征多项式MATLAB教程程序设计程序设计 现代科学运算现代科学运算 -电气工程系研究生例求矩阵A的eA和eAtMATLAB教程程序设计程序设计 现代科学运算现代科学运算 -电气工程系研究生 2 矩阵的分解矩阵的分解 矩阵的相似变换矩阵的相似变换 矩阵的三角分解矩阵的三角分解 对称矩阵的对称矩阵的Choesky分解分解 矩阵的正交基矩阵的正交基 矩阵的条件数矩阵的条件数MAT

46、LAB教程程序设计程序设计 现代科学运算现代科学运算 -电气工程系研究生3 方程求解问题及方程求解问题及MATLAB实现实现 矩阵求逆矩阵求逆 inv(A) (对于非奇异阵) 矩阵的广义逆矩阵的广义逆 pinv(A)(对于奇异阵满足AMA=AMAM=AAM与MA均为对称阵) 线性方程求解线性方程求解 若AX=B则X=AB若XA=B则X=B/A更严格地更严格地,若矩阵A为非奇异阵则方程唯一解为:X=inv(A)*B或X=B/A若矩阵A为奇异方阵,如果A和A,B矩阵的秩均为m,则方程有无穷多组解,先用x=null(A)得出齐次方程的基础解系,然后再用x0=pinv(A)*B求出一个特解,这时定义符

47、号变量a1,a2,an-m,则原方程的解为x=a1*x(:,1)+a2*x(:,2)+an-m*x(:,n-m)+x0若A和A,B矩阵的秩不同,则方程无解,只能用x=pinv(A)*B求出方程的最小二乘解MATLAB教程程序设计程序设计 现代科学运算现代科学运算 -电气工程系研究生例MATLAB教程程序设计程序设计 现代科学运算现代科学运算 -电气工程系研究生4 Lyapunov方程求解方程求解 Lyapunov方程AX+XAT=-C其中A,C为给定阵,且C为对称阵则X=lyap(A,C)离散系统Lyapunov方程AXAT-X+C=0则X=dlyap(A,C)5 Sylvester方程(方程

48、( Lyapunov方程一般形式)求解求解AX+XB=-C其中A,B,C为给定阵,则X=lyap(A,B,C)MATLAB教程程序设计程序设计 现代科学运算现代科学运算 -电气工程系研究生常微分方程问题的常微分方程问题的MATLAB求解求解 1 一阶常微分方程组的数值解法一阶常微分方程组的数值解法 xi1=fi(t,x),i=1,2,nMATLAB提供了一些不能方法的数值解函数:ode23()(二阶三极RK算法),ode45(),ode15s()(变阶次刚性方程求解算法)调用格式都是一致的: t,x=ode45(方程函数名,方程函数名,tspan,x0,选项,附加参数)选项,附加参数) 其中,

49、t为仿真结果的自变量构成的向量(一般变步长),返回的x是一个矩阵,其列数为n,及微分方程的阶次,行数等于t的行数。“方程函数名”为用MATLAB编写的固定格式的M-函数,描述一阶微分方程组,tspan为数值解时的初始和终止时间等信息,x0为初始状态变量,“选项”为求解微分方程的一些控制参数,还可以将一些“附加参数”在求解函数和方程描述函数之间传递。MATLAB教程程序设计程序设计 现代科学运算现代科学运算 -电气工程系研究生例x.(t)=-y(t)-z(t)y.(t)=x(t)+ay(t)a=b=0.2,c=5.7,且x(0)=y(0)=z(0)=0z.(t)=b+x(t)-cz(t)选状态变

50、量x1=x,x2=y,x3=zx.1(t)=-x2(t)-x3(t)x.2(t)=x1(t)+ax2(t)x.3(t)=b+x1(t)-cx3(t)若要求该方程,需先编写一个M函数描述方程组:MATLAB教程程序设计程序设计 现代科学运算现代科学运算 -电气工程系研究生编写M函数,保存为rossler.mMATLAB教程程序设计程序设计 现代科学运算现代科学运算 -电气工程系研究生在命令窗口输入:MATLAB教程程序设计程序设计 现代科学运算现代科学运算 -电气工程系研究生上例,如果a,b,c三个参数需要用外部命令给出,则可以按下面的格式写出一个新的M函数来描述微分方程组,其中用变量flag占

51、位MATLAB教程程序设计程序设计 现代科学运算现代科学运算 -电气工程系研究生常微分方程的转换常微分方程的转换MATLAB下提供的微分方程数值解函数,只能处理一阶微分方程组形式给下提供的微分方程数值解函数,只能处理一阶微分方程组形式给出的微分方程,所以在求解之前需要先将给定的微分方程变换成一阶微出的微分方程,所以在求解之前需要先将给定的微分方程变换成一阶微分方程组分方程组例例 考虑著名的考虑著名的Van der pol方程方程 ,已知,已知 用数值解法求其解用数值解法求其解首先选取状态变量首先选取状态变量 则则编写编写M函数:函数: functiony=vdp_eq1(t,x)y=x(2);

52、-(x(1)2-1)*x(2)-x(1);保存为vdp_eq1.mMATLAB教程程序设计程序设计 现代科学运算现代科学运算 -电气工程系研究生命令窗口MATLAB教程程序设计程序设计 现代科学运算现代科学运算 -电气工程系研究生线性常微分方程的解析解线性常微分方程的解析解MALAB中提供了dsolve()函数求解线性常系数微分方程的解析解,首先要用syms声明符号变量,以区别于MATLAB语言的常规数值变量,然后就可以使用dsolve(表达式)直接求解。MATLAB教程程序设计程序设计 现代科学运算现代科学运算 -电气工程系研究生最优化问题的最优化问题的MATLAB求解求解1无约束最优化问题

53、求解MATLAB提供基于单纯形算法求解无约束最优化的fminsearch()函数,调用格式为:x,fopt,key,c=fminsearch(Fun,x0,OPT)其中Fun为要求解问题的数学描述,x0自变量的起始搜索点,OPT为最优化工具箱的选项设定;x为返回的解;fopt是目标函数在x点处的值。返回的key表示函数返回的条件,1表示已经求解出方程的解,0表示未搜索到方程的解。返回的c为解的附加信息,该变量为一个结构体变量,其iterations成员变量表示迭代的次数,而其中的成员funCount是目标函数的调用次数。Fminunc()与fminsearch()功能和调用格式相似。MATLA

54、B教程程序设计程序设计 现代科学运算现代科学运算 -电气工程系研究生例如:求x2-2x+6的最小值MATLAB教程程序设计程序设计 现代科学运算现代科学运算 -电气工程系研究生MATLAB教程程序设计程序设计 现代科学运算现代科学运算 -电气工程系研究生MATLAB教程程序设计程序设计 现代科学运算现代科学运算 -电气工程系研究生MATLAB教程程序设计程序设计 现代科学运算现代科学运算 -电气工程系研究生2 有约束最优化问题求解有约束最优化问题求解其中x=x1,x2,xnT。在约束条件中,直接给出了线性等式约束线性不等式约束一般非线性等式约束一般非线性不等式约束优化变量的上下界约束若原问题关

55、系为若原问题关系为,则要将约束两端乘以,则要将约束两端乘以-1-1,转化为,转化为关系式关系式MATLAB教程程序设计程序设计 现代科学运算现代科学运算 -电气工程系研究生MATLAB最优化工具箱中提供了一个fmincon()函数,调用格式为:x,fopt,key,c=fmincon(Fun,x0,A,B,Aeq,Beq,xm,xM,CFun,OPT)其中Fun为给目标函数编写的M函数,x0为起始搜索点,各个矩阵约束如果不存在,则应该用空矩阵占位。CFun为给非线性约束函数写的M函数,OPT为控制选项;x为返回的解;fopt是最优化目标函数的值。返回的key若不是正数则表示未搜索到问题的解,可

56、考虑改变初值或修改控制参数OPT,再进行寻优。另外如果发现最优化问题不是容许问题,则在求解结束后给出提示:Nofeasiblesolutoionfound。例例 考虑非线性最优化问题考虑非线性最优化问题MATLAB教程程序设计程序设计 现代科学运算现代科学运算 -电气工程系研究生若想求解该问题,首先要编写目标函数和约束函数的M函数functiony=c2exmobj(x)y=exp(x(1)*(4*x(1)2+2*x(2)2+4*x(1)*x(2)+2*x(2)+1);functionc,ce=c2exmcon(x)ce=;c=x(1)+x(2);x(1)*x(2)-x(1)-x(2)+1.5

57、;-10-x(1)*x(2);然后使用函数寻优MATLAB教程程序设计程序设计 现代科学运算现代科学运算 -电气工程系研究生命令窗口MATLAB教程程序设计程序设计 现代科学运算现代科学运算 -电气工程系研究生所得提示信息显示,该结果并非原问题的二姐,所以考虑用所得结果作为初值继续寻优,如此利用循环可得原问题的最优解(这里经过两次循环得到了最优解)MATLAB教程程序设计程序设计 现代科学运算现代科学运算 -电气工程系研究生另一种做法MATLAB教程程序设计程序设计 现代科学运算现代科学运算 -电气工程系研究生3 最优曲线拟合方法最优曲线拟合方法 假设有一组数据xi,yi,i=1,2,N,且一

58、直这组数据满足某一函数原型y(x)=f(a,x),其中a为待定系数向量,则最小二乘曲线拟合的目标就是求出这组待定系数的值,使得目标函数为最小。MATLAB中提供了lsqcurvefit()函数来解决最小二乘曲线拟合问题,该函数调用格式为:a,Jm=lsqcurvefit(Fun,a0,x,y,xm,xM,opt)其中,a0为最优化的初值,x,y为原始输入输出数据向量,Fun为原型函数的MATLAB表示,可以用inline()函数描述,也可用M函数表示,该函数还允许指定待定向量的最小值xm和xM,也可设置搜索控制参数opt。调用该函数则将返回待定系数向量a,以及在此待定系数下的目标函数的值Jm例

59、假设在实验中测出一组数据,且已知其可能满足的函数,则可以通过最小二乘拟合的方法拟合出函数的待定系数。假设可以通过数据生成的方法产生这组“实验数据”,下面将演示曲线的最小二乘拟合方法。为了验证正确性,我们先人为生成实验数据:如果已知待拟合的曲线方程模型为y(x)=a1ea2xsin(a3x+a4)cos(a5x),要通过最小二乘进行最优拟合,先编写如下M函数functionF=c2fcurve(a,x)F=a(1)*exp(-a(2)*x).*sin(a(3)*x+a(4).*cos(-a(5)*x);然后再通过如下命令:得:可由a的取值看出与原来的曲线完全一致。MATLAB提供的多项式拟合函数a=polyfit(x,y,n)也可以用于曲线拟合,其中x,y为数据向量,n为拟合系数的阶次。所得多项式为按多项式系数按降幂顺序排列构成。这里为了验证所得多项式与原数据的相似性,使用了polyval()来计算多项式的值。结果表示6阶拟合多项式为:P6(x)=-0.0002x6+0.0054x5-0.0632x4+0.3430x3-0.8346x2+0.6621x+0.20178阶多项式拟合结果同理。拟合结果:

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 医学/心理学 > 基础医学

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