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

上传人:7**** 文档编号:243138903 上传时间:2024-09-16 格式:PPT 页数:121 大小:1.50MB
返回 下载 相关 举报
自第二章研究生仿真课MATLAB编程基础课件_第1页
第1页 / 共121页
自第二章研究生仿真课MATLAB编程基础课件_第2页
第2页 / 共121页
自第二章研究生仿真课MATLAB编程基础课件_第3页
第3页 / 共121页
点击查看更多>>
资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,MATLAB,教程,基础准备及入门,-,电气工程系研究生,总体内容:,1,、安装、启动(略),2,、,MATLAB,指令窗口操作及规则(适用于各种版本),3,、,MATLAB,最常用的五个交互界面:历史指令窗、当前 目录浏览器、工作空间浏览器、变量编辑器、,M,文件编辑器,4,、,MATLAB,的帮助体系和求助方法,MATLAB,教程,基础准备及入门之,窗口操作及规则,-,电气工程系研究生 一、 窗口,MATLAB,教程,基础准备及入门,-,电气工程系研究生,帮助系统及其使用,常用帮助指令,1,、函数搜索指令(知道具体函数名,不知如何使用),指令窗口帮助系统(在指令窗口显示帮助信息),help,列出所有函数分组名,help TopicName,列出指定名称函数组中的所有函数,help FunName,给出指定名称函数的使用方法,打开帮助系统显示帮助信息,helpwin,列出所有函数分组名,helpwin TopicName,列出指定名称函数组中的所有函数,helpwin FunName,给出指定名称函数的使用方法,更详尽的帮助信息,doc ToolboxName,列出指定名称工具包中的所有函数名,doc FunName,给出指定名称函数的使用方法,操作举例,:bar,MATLAB,教程,基础准备及入门,窗口操作及规则,-,电气工程系研究生、 二、运行,最简单的计算器使用方法,【例一】在指令窗做如下操作,MATLAB,运算符是各种计算程序中常见的习惯符号,一条指令结束后,必须按回车键,该指令才会执行,不含赋值号的表达式的结果赋给,MATLAB,的一个默认变量,ans,MATLAB,教程,基础准备及入门,窗口操作及规则,-,电气工程系研究生、 二、运行,【例二】指令续行,3,个或,3,个以上的连续黑点表示续行,包含赋值号,=,指令执行后,变量,S,被保存到,MATLAB,的工作空间(,Workspace,)中备用。如果不用,clear,指令清除或重新赋值,则会一直保存在空间中,直到本,MATLAB,指令窗口关闭为止。,MATLAB,教程,基础准备及入门,窗口操作及规则,-,电气工程系研究生 二、运行,【例三】逗号,分号;的使用,以上两种情况都是合法的,左边使用逗号将两个表达式分开,回车后,xy,的结果都显示,右边使用分号,表示,x,的结果不显示,只显示,y,的结果,MATLAB,教程,基础准备及入门,窗口操作及规则,-,电气工程系研究生 二、运行,常用标点的意义,空格,输入量之间的分隔符(命令窗口会忽略变量之间的这些空格),输入数组元素之间的分隔符,,,逗号,要显示计算结果与其他命令之间的分隔;输入量之间的分隔符或数组元素之间的分隔符,.,点,在数值计算中,可以作为小数点来使用;在数组运算过程中,可作为元素运算的标示,;,分号,在命令行,末尾,表示在计算结束后不显示计算结果;或在输入数组时,作为数组之间的分隔符,:,冒号,在生成一维数组时,可作为分隔符;用作单下标引用时的全部元素构成的全部数列;循环运算,过程中的分隔符,%,百分号,位于命令行的开头,表示该行为注释行, ,单引号对,用于定义字符串,(),圆括号,改变运算过程中的优先级次序;在函数调用时使用;作为数组的索引, ,方括号,定义矩阵, ,花括号,定义单元数组;图形中被控特殊字符括号,-,下划线,定义变量、函数或文件时使用的连字符;图形中被控下脚标的签到符号,续行号,当输入命令窗口的命令较长时,可在一行中未完成的命令后输入三个以上的点号,在下一行继,续输入该命令的剩余部分,完成较长命令的输入与执行。,“at”,号,放在函数名称前,形成函数句柄;作为匿名函数的前导符,!,感叹号,调用操作系统运算,MATLAB,教程,基础准备及入门,窗口操作及规则,-,电气工程系研究生、 二、运行,【例四】控制键方向键的使用,在命令出现错误或需要修改时,可点击,或,调出以前输入的命令,进行修改并回车,回车时可在该行任何位置,不必将光标移至句末。,还可以只输入命令行的少数几个字符,然后使用,可以将最后一个以这几个字符开头的命令行调出。,MATLAB,教程,基础准备及入门,窗口操作及规则,-,电气工程系研究生、 二、运行,常用的命令行控制键:, ,PgUp PgDn,Home End,Del,删左,Backspace,删右,Esc,删整行,MATLAB,教程,基础准备及入门,窗口操作及规则,-,电气工程系研究生、 二、运行,数值、变量和表达式,合法的数值表达:3 -99 0.001 1.3e-3 4.5e33,范围: 10,-308,10,308,变量名规则:,*,区分大小写,*,第一个为英文字母,最多包含63个字符,*,不得包含空格、标点、运算符,可包含下连符如my_var_2011是合法的,*,禁忌:不与MATLAB关键词(for,if/else,end等)同名,尽量不与MATLAB自用的变量名(如eps,pi等)、函数名(如sin,eig等)、文件夹名(如rtw,toolbox等)相同,*,MATLAB提供两个判断指令用于判断所用变量名是否犯忌,iskeyword UserName,运行结果为0表示不同于关键字,exist UserName,运行结果为0表示不同于自用变量名、函数名、文件夹名,MATLAB,教程,基础准备及入门,窗口操作及规则,-,电气工程系研究生、 二、运行,默认的数学常数,eps,:浮点相对精度,exp,:自然对数的底数,e i,或,j,:基本虚数单位,inf,或,Inf,:无限大, 例如,1/0 nan,或,NaN,:非数值(,Not a number,),例如,0/0 pi,:圆周率,p,(,= 3.1415926.,),realmax,:系统所能表示的最大数值,realmin,:系统所能表示的最小数值,nargin:,函数的输入引数个数,nargout:,函数的输出引数个数,lasterr,:存放最新的错误信息,lastwarn,:存放最新的警告信息,MATLAB,教程,基础准备及入门,-,电气工程系研究生,MATLAB,教程,基础准备及入门,-,电气工程系研究生,MATLAB,教程,基础准备,运行,-,电气工程系研究生,向量运算,向量的构造,在,MATLAB,中“,:,”是一个重要的字符,如,x,1,:,4,即产生一个,1-4,单位增量的行向量,MATLAB,教程,基础准备,运行,-,电气工程系研究生,也可以产生单位增量小于,1,的行向量,方法是把增量放在起始和结尾量的中间,并用冒号分割开来。如:,MATLAB,教程,基础准备,运行,-,电气工程系研究生,也可以产生单位增量为负数的行向量,如,MATLAB,教程,基础准备,运行,-,电气工程系研究生,符号“:”也可以用来产生简易的表格。为了产生纵向表格形式,首先要用它产生行向量,然后进行转置再利用所得的列向量计算出另一列向量,即可合成有两列的矩阵。例如:,MATLAB,教程,基础准备,运行,-,电气工程系研究生,下标,MATLAB,的下标具有很重要的功能,可以在对矩阵的行、列子矩阵处理时使用,也可以用来产生向量。使用下标和向量,会使运算更为清晰和方便。单个的矩阵元素可在括号中用下标来表达。例如,已知,其中元素,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,教程,基础准备,运行,-,电气工程系研究生,如果,v,2,:,2,:,n,;,W,3 1 4 1 6,,此时,A(v,,,w),是合法的,但并不排除出问题的可能性。,进一步分析,,A(,:,),在赋值语句的右边,表示将,A,的所有元素在一个长的列向量中展成串,如,A,1 2,;,3 4,;,5 6,,,b,A(,:,),则结果为,MATLAB,教程,基础准备,运行,-,电气工程系研究生,在赋值语句左边,A(,:,),可以重新组成与刚才的,A,具有相同阶数的矩阵,这相当于在原来的,A,没有被清除的情况下,用新的元素置换,实际上起着一种提供格式的作用。例如在上例的基础上,(,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,教程,基础准备,三、,基本数学运算,-,电气工程系研究生,矩阵的运算,1,、矩阵的代数运算,B=A,转置,X=AB(AX=B),左除,X=B/A(XA=B),右除,C=A+B C=A-B C=A*B,B=fliplr(A),左右翻转,(flip left right),C=flipud(A),上下翻转(,flip up down),D=rot90(A),逆时针旋转,90,度,F=,Ax,乘方,C=A.*B,点运算,(,矩阵相应元素之间直接进行乘法,Cij=AijBij,),X.5,x,中每个元素取,5,次方,A.A,每个元素取,aij,aij,MATLAB,教程,基础准备,三、,基本数学运算,-,电气工程系研究生,2,、逻辑运算,A&B,与 如果两矩阵相应元素均非,0,则给结果元素为,1,,否则为,0,A|B,或 如果两矩阵相应元素均为,0,则给结果元素为,0,,否则为,1,A,非 若相应元素为,0,,则结果为,1,,否则为,0,xor,(,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,教程,基础准备,三、,基本数学运算,-,电气工程系研究生,查询函数,all(),如,all(a=5),当,a,中的某,列,元素全大于等于,5,时,结果元素为,1,,否则为,0,any(),如,any(a=5),当某,列,中含有大于等于,5,的元素时,结果为,1,,否则为,0,若想判定一个矩阵的所有元素是否都大于等于,5,时,则可写成,all(a(:)=5),MATLAB,教程,基础准备,基本数学运算,-,电气工程系研究生,解析结果的化简与变换,符号运算工具箱可用于推导数学公式,但结果有时不是最简形式,或不是用户期望的形式。,MATLAB,提供了一些化简函数:,simple(),得出各中方法中自动选择最简格式,collect(),函数合并同类项,numden(),提取多项式的分子和分母,sincos(),进行三角函数的化简,另外还有一个很有用的变量替换函数,sub(),MATLAB,教程,基础准备,基本数学运算,-,电气工程系研究生,例:,MATLAB,教程,基础准备,基本数学运算,-,电气工程系研究生,基本数据变换和数论函数,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,分别为分子和分母矩阵,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,,否则为,0,MATLAB,教程,基础准备,基本数学运算,-,电气工程系研究生,例,MATLAB,教程,基础准备,基本数学运算,-,电气工程系研究生,例,求,pq,的最小公倍数和最大公约数,%,定义符号变量,s,MATLAB,教程,程序设计,M,文件,-,电气工程系研究生,MATLAB,命令执行方式:,1,)交互式命令执行方式(逐条解释),2,),M,文件的程序执行方式(扩展名,.m,的以,matlab,语言编写的文件),掌握建立和执行,M,文件的方法,掌握利用,if,语句、,switch,语句实现选择结构的方法,掌握利用,for,语句,while,语句实现循环结构的方法,熟悉利用向量运算来代替循环操作的方法,掌握定义和调用,MATLAB,函数的方法,MATLAB,教程,程序设计,M,文件,-,电气工程系研究生,M,文件是,文本文件,,可以用任何编辑程序来建立和编辑,默认用,MATLAB,提供的文本编辑器打开进行编辑。,一、,M,文件的建立和打开(三种方法),建立:命令按钮操作:点击,MATLAB“,新建”(,New M-file),菜单操作:,File,New,M-file,命令操作:命令窗口键入,edit,M,文件保存位置一般是,MATLAB,默认的工作目录,work,,如果要存到其它目录,则应该将该目录设定为当前目录或将其加到搜索路径中。,打开,M,文件:命令按钮操作,菜单操作,命令操作(命令窗口键入:,edit,文件名),在当前目录窗口左键双击文件名打开,MATLAB,教程,程序设计,M,文件,-,电气工程系研究生,二、,M,文件的分类,根据调用方式的不同分为两类:,命令,(,脚本)文件,(Script File),函数文件,(Function File),,扩展名均为,.m,Script File,命令(脚本)文件没有输入参数,也不返回输出参数,而函数文件可以带输入参数,也可返回输出函数,命令(脚本)文件对,MATLAB,工作空间中的变量进行操作,文件中所有命令的执行结果也完全返回到工作空间中,而函数文件中定义的变量为局部变量,当函数文件执行完毕时,这些变量被清除,命令(脚本)文件可以直接运行,在,MATLAB,命令窗口输入命令文件的名字就会顺序执行命令文件中的命令,而函数文件不能直接运行,需要要以函数调用的方式来调用它,MATLAB,教程,程序设计,M,文件,-,电气工程系研究生,【例一】建立一个,M,文件,其功能是:用两个实变量,R,、,M,生成复变量,RM,。,做法:首先建立命令文件并以文件名,setcomp.m,保存在当前目录下,clear,R=1,2,3;4,5,6;,M=11,12,13;14,15,16;,RM,R+i*M,然后在,MATLAB,命令窗口中输人,setcomp,则会执行该,m,文件,结果为,RM=,1.0000+11.0000i 2.0000+12.0000i 3.0000+13.0000i,4.0000+14.0000i 5.0000+15.0000i 6.0000+16.0000i,调用该命令文件时,不用输入参数,也没有输出参数,文件自身建立需要的变量,。当文件执行完毕后,可以用命令,whos,查看工作空间中的变量,,R,、,M,、,RM,仍保留在空间中。,MATLAB,教程,程序设计,M,文件,-,电气工程系研究生,【例二】建立一个,函数文件,fsetcomp.m,function RM=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.0000i 2.0000+12.0000i 3.0000+13.0000i,4.0000+14.0000i 5.0000+15.0000i 6.0000+16.0000i,调用该函数文件时,既有输入参数,又有输出参数。当函数调用完毕后,可以用命令,whos,查看工作空间中的变量,这时会发现函数参数,R,、,M,、,RM,未被保留在空间中,而,a,、,b,、,c,保留在空间中。,MATLAB,教程,程序设计,M,文件,-,电气工程系研究生,例三,编制,M,函数文件,mean1.m,,计算,1-99,的平均数,第一步:,第二步:保存为,mean1.m,第三步:在命令窗口输入,MATLAB,教程,程序设计,程序控制结构,-,电气工程系研究生,任何程序都由,三种基本控制结构,组成:,顺序结构、选择结构、循环结构,。,一、顺序结构,( 一般涉及数据的输入、数据的计算或处理、数据的输出等),1,、数据的输入,input,函数,(用于从键盘输入数据),该函数调用格式:,h=input(,提示信息,选项);,提示信息:字符串,提示用户输入什么样的数据。例如,从键盘输入,A,矩阵,可以采用下面的命令完成:,h=input(,输入,A,矩阵:);,执行语句时,屏幕上显示提示信息”输入,A,矩阵:”,然后等待用户键入按,MATLAB,规定格式输入,A,矩阵的值。,如果在该函数中采用“,s”,选项,则允许输入一个字符串。如想输入一个人的姓名,可采用命令:,Xm=input(whats your name?,s);,MATLAB,教程,程序设计,程序控制结构,-,电气工程系研究生,2,、数据的输出,MATLAB,提供的命令窗口输出函数主要有,disp,函数,,调用格式为,disp(,输出项) 其中:输出项既可以为字符串,也可以为矩阵,如,A=Hello,World,!,;,disp(A),输出为,Hello,World,!,又如:,A=1,2,3,;,4,5,6,;,7,8,9,;,disp(A),输出为,1 2 3,4 5 6,7 8 9,(,disp,函数显示矩阵时不显示函数名,不留空行),MATLAB,教程,程序设计,程序控制结构,-,电气工程系研究生,【例一】求方程,ax,2,+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);,%num2str Convert number to string,程序输出为,a=?6,b=?1,c=?3,x1=-0.33333,x2=-1.5,MATLAB,教程,程序设计,程序控制结构,-,电气工程系研究生,二、选择结构,1,、,if,语句,a),单分支,if,语句,语句调用格式为:,if,条件,语句块,end,MATLAB,教程,程序设计,程序控制结构,-,电气工程系研究生,b),双分支,if,语句,语句调用格式为,if,条件,语句块,1,else,语句块,2,end,MATLAB,教程,程序设计,程序控制结构,-,电气工程系研究生,c,)多分支,if,语句,语句调用格式为,if,条件,语句块,1,elseif,语句块,2,elseif,语句块,n,else,语句块,n+1,end,MATLAB,教程,程序设计,程序控制结构,-,电气工程系研究生,2,、,switch,语句,(根据表达式的取值不同,分别执行不同的语句),调用格式为,switch,表达式,case,结果表,1,语句块,1,case,结果表,n,语句块,n,otherwise,语句块,n+1,end,switch,子句后的表达式应为一个标量或一个字符串,,case,子句后的结果即可为标量或字符串,也可为一个将多个结果用大括号括起来的单元数据(,cell),。如果,case,后的结果为一个单元数据,则表达式的值等于该单元数据中的某个元素时,执行相应语句组。,MATLAB,教程,程序设计,程序控制结构,-,电气工程系研究生,三、循环结构,(按给定条件重复执行指定语句),MATLAB提供了两种语句:for语句和 while语句,1、for语句的格式为,for 循环变量=表达式1:表达式2:表达式3,循环体语句,end,其中,表达式1的值为循环变量初值,表达式2的值为步长,表达式3的值为循环变量的终值。步长为1时,表达式2可以省略。,MATLAB,教程,程序设计,程序控制结构,-,电气工程系研究生,【例】一个,3,位整数各位数字的立方和等于该数本身则称该数为水仙花数。输出全部的水仙花数。程序如下:,shu= %,用于存放结果,先赋空值,for m=100:999,m1=fix(m/100); %,求,m,的百位数字,m2=rem(fix(m/10),10); %,求,m,的十位数字,m3=rem(m,10); %,求,m,的个位数字,if m=m1*m1*m1+ m2*m2*m2+ m3*m3*m3,shu=shu,m %,存入结果,end,end,shu,程序执行结果:,shu=,153 370 371 407,MATLAB,教程,程序设计,程序控制结构,-,电气工程系研究生,【例】已知,y=1-1/2+1/3-1/4+1/5,-1/100,求,y,的值,程序如下:,y=0;,n=100;,for i=1:n,y=y+(-1)(i-1)/i;,end,disp(y),程序执行结果为,y=,0.6882,上两例中,,for,语句的循环变量都是标量,与其他高级语言的循环语句等价。而,MATLAB,中循环变量还可以是一个,列向量,,则更一般调用格式为:,for,循环变量,=,矩阵表达式,循环体语句,end,MATLAB,教程,程序设计,程序控制结构,-,电气工程系研究生,【例】求矩阵各行的和,程序如下:,s=0;,a=12,13,14;15,16,17;18,19,20;21,22,23;,for k=a,s=s+k;,end,disp(s),该程序执行结果:,39,48,57,66,MATLAB,教程,程序设计,程序控制结构,-,电气工程系研究生,2,、,While,语句,While,语句的调用格式为,while(,条件),循环体语句,end,其执行过程为:若条件成立,则执行循环体语句,执行后再判断条件是否成立,如不成立则跳出循环。,MATLAB,教程,程序设计,函数文件,-,电气工程系研究生,函数文件,函数文件是另一种形式的,M,文件,每一个函数文件都定义一个函数,,MATLAB,提供的标准函数大部分是由函数文件定义的。,一、函数文件的基本结构,函数文件由,function,语句引导,基本结构为,function,输出形参表,=,函数名(输入形参表),function,返回变量列表,=,函数名,(,输入变量列表,),注释说明部分,注释说明语句段,由,%,引导,函数体语句,输入、返回变量格式的检测,函数体语句,其中,以,function,开头的一行为引导行,表示该,M,文件是一个函数文件。函数名的命名规则与变量名相同。输入形参为函数的输入参数,输出形参为函数的输出参数。,当输出形参多于一个时,则应该用方括号括起来。,MATLAB,教程,程序设计,函数文件,-,电气工程系研究生,说明,(,1,)函数文件名通常由函数名再加上扩展名,.m,组成,不过函数文件名与函数名也可以不同。当两者不同时,,MATLAB,将忽略函数名而确认函数文件名,,调用时使用函数文件名,。不过最好两者一致,以免出错。,(,2,)注释说明包括三部分内容,紧随,函数文件引导行之后以,%,开头的第一注释行。一般包括大写的函数文件名和函数功能简要描述,供,lookfor,关键词查询和,help,在线帮助用。,第一注释行及之后连续的注释行。通常包括函数输入输出参数的含义及调用格式说明等信息,构成全部在线帮助文本。,与在线帮助文本相隔一空行的注释行。包括函数文本编写和修改的信息,如作者、修改日期、版本等内容,用于软件档案管理。,(,3,)如果在函数文件中插入,return,语句,则执行到该语句就结束函数的执行,程序流程转至调用该函数的位置。通常,在函数文件中也可不使用,return,语句,这时在被调用函数执行完成后自动返回。,MATLAB,教程,程序设计,函数文件,-,电气工程系研究生,从系统的角度来说,,MATLAB,函数是一个变量处理单元,它从主调函数接收变量,对之进行处理后,将结果返回到主调函数中,除了输入和输出变量外,其他在函数内部产生的所有变量都是局部变量,在函数调用结束后这些变量均将消失。,输入和返回变量的实际个数分别由,nargin,和,nargout,两个,MATLAB,保留变量来给出,只要进入该函数,,MATLAB,就将自动生成这两个变量。,MATLAB,教程,程序设计,函数文件,-,电气工程系研究生,【例】编写求一个向量之和及平均值的函数文件:,function s,m=fvector(v),%VECTOR fvector.m calculates sum and mean of a vector,%v,向量,%s,和,%m,平均值,%2008,年,11,月,10,日编,m,n=,size,(v);,if (m1 & n1,显然,求,n!,需要求,(n-1)!,,这时可采用递归调用。递归调用函数文件,factor.m,如下:,function f=factor(n),if n pentagram o square diamond hexagram ,分别为星号、点号、叉号、,、,、,、五角星、圆圈、,、,、六角形、,这些选项也可以进行组合,例如要想绘制红色的点划线,且每个转折点用五角星表示,则选项可以进行如下组合,r-.pentagram,hold on,、,hold off,、,grid on,、,grid off,、,title(),、,xlabel(),、,ylabel(),另外也可使用,line(),命令绘制曲线,调用格式与,plot(),完全一致,不同的是,line(),不更新现有坐标系,可在当前图形上直接叠加曲线,MATLAB,教程,程序设计,图形绘制,-,电气工程系研究生,例:,图示复数,z1=4+3i, z2=1+2i,的和,(,其中,shg:show graph window),MATLAB,教程,程序设计,图形绘制,-,电气工程系研究生,其他二维图形绘制语句(仅举少数),polar(x,y),极坐标图,hist(y,n),直方图,stairs(x,y),阶梯图形,loglog(x,y),对数图,注:,xy,分别表示横轴和纵坐标绘图数据。,MATLAB,可以将一个图形窗口分割成若干个小的区域,分别绘制不同的图形:,subplot(m,n,k),表示将图形窗口分割成,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(),可扩展到三维中,,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(),或,surf(),等函数进行三维图形绘制。具体函数调用格式为:,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)=(x,2,-2x)e,-x,2,-y,2,-xy,假设横坐标轴从,-3,开始终止于,3,,步距为,0.1,,纵坐标,-2-2,,步距,0.1,(即坐标网格分割)则,用,MATLAB,绘图步骤:,MATLAB,教程,程序设计,图形绘制,-,电气工程系研究生,MATLAB,教程,程序设计,图形绘制,-,电气工程系研究生,MATLAB,教程,程序设计,图形绘制,-,电气工程系研究生,MATLAB,教程,程序设计,图形绘制,-,电气工程系研究生,如果不设置等高线条数(从图中可看出系统默认的数值偏小,等高线稀疏),MATLAB,教程,程序设计,图形绘制,-,电气工程系研究生,三维图形视角设置,MATLAB,三维图形显示提供了修改视角的功能(两种方法),第一种:使用图形窗口工具栏中提供的按钮(如图所示),点击按钮,鼠标箭头变为,带箭头圆环,此时在图形上,按住鼠标左键进行拖动,即,可使图形转动。,MATLAB,教程,程序设计,图形绘制,-,电气工程系研究生,第二种:采用view()函数有目的地进行旋转。格式为,view(,),方位角,定义为视点在xoy平面投影点,与y轴负方向之间的夹角,默认值为,-37.5,仰角,定义为视点和xoy平面的夹角,,默认值为30,MATLAB,教程,程序设计,图形绘制,-,电气工程系研究生,例如以方位角,80,,仰角,10,观察,MATLAB,教程,程序设计,图形绘制,-,电气工程系研究生,继续输入,view(0,90),MATLAB,教程,程序设计,现代科学运算,-,电气工程系研究生,这里的运算,不仅是指数值运算,还包含解析运算。,MATLAB,起源于线性代数的数值运算,在其长期发展过程中,形成了微分方程数值解法、最优化技术、数据处理、数理统计等诸多分支,并成功引入了符号运算功能,使得公式推导成为可能。,线性代数问题的,MATLAB,求解,1,矩阵的参数化分析(与矩阵有关的量的计算),矩阵的行列式(,determinant),det(),矩阵的迹,(trace),trace(),矩阵的秩(,rank),rank(),矩阵的范数(,norm),norm(A), norm(A,1), norm(A,inf),矩阵的特征多项式、特征方程与特征根,(eigenvalues),p=poly() %p,为行向量,为矩阵的降幂排列的特征多项式系数,多项式及多项式矩阵的求值,(,即求,a,1,x,n,+a,2,x,n-1,+,+a,n,x+a,n+1,的值,),若,x,为一个数值则用,c=polyval(a,x),若,x,为一个矩阵则用,c=polyvalm(a,x),MATLAB,教程,程序设计,现代科学运算,-,电气工程系研究生,矩阵的特征值问题,V,D=eig(A,),矩阵指数,e,A,和指数函数,e,At,expm(A),例,MATLAB,教程,程序设计,现代科学运算,-,电气工程系研究生,例,含有变量的,Vandermonde,矩阵的特征多项式,MATLAB,教程,程序设计,现代科学运算,-,电气工程系研究生,例,求矩阵,A,的,e,A,和,e,At,MATLAB,教程,程序设计,现代科学运算,-,电气工程系研究生,2,矩阵的分解,矩阵的相似变换,矩阵的三角分解,对称矩阵的,Choesky,分解,矩阵的正交基,矩阵的条件数,MATLAB,教程,程序设计,现代科学运算,-,电气工程系研究生,3,方程求解问题及,MATLAB,实现,矩阵求逆,inv(A,),(对于非奇异阵),矩阵的广义逆,pinv(A),(对于奇异阵满足,AMA=A MAM=A AM,与,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,),得出齐次方程的基础解系,然后再用,x,0,=pinv(A)*B,求出一个特解,这时定义符号变量,a,1,a,2,a,n-m,则原方程的解为,x=a,1,*x(:,1)+a,2,*x(:,2)+,+a,n-m,*x(:,n-m)+x,0,若,A,和,A,B,矩阵的秩不同,则方程无解,只能用,x=pinv(A)*B,求出方程的最小二乘解,MATLAB,教程,程序设计,现代科学运算,-,电气工程系研究生,例,MATLAB,教程,程序设计,现代科学运算,-,电气工程系研究生,4 Lyapunov,方程求解,Lyapunov,方程,AX+XA,T,=-C,其中,A,C,为给定阵,且,C,为对称阵则,X=lyap(A,C),离散系统,Lyapunov,方程,AXA,T,-X+C=0,则,X=dlyap(A,C),5 Sylvester,方程(,Lyapunov,方程一般形式),求解,AX+XB=-C,其中,A,B,C,为给定阵,则,X=lyap(A,B,C),MATLAB,教程,程序设计,现代科学运算,-,电气工程系研究生,常微分方程问题的,MATLAB,求解,1,一阶常微分方程组的数值解法,x,i,1,=f,i,(t,x), i=1,2,n,MATLAB,提供了一些不能方法的数值解函数:,ode23,()(,二阶三极,RK,算法),,ode45(),ode15s(),(,变阶次刚性方程求解算法)调用格式都是一致的:,t,x=ode45(,方程函数名,,tspan,x0,选项,附加参数),其中,,t,为仿真结果的自变量构成的向量(一般变步长),返回的,x,是一个矩阵,其列数为,n,,及微分方程的阶次,行数等于,t,的行数。“方程函数名”为用,MATLAB,编写的固定格式的,M-,函数,描述一阶微分方程组,,tspan,为数值解时的初始和终止时
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 教学培训


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!