数学建模Matlab基础.ppt

上传人:牧羊曲112 文档编号:6295550 上传时间:2023-10-14 格式:PPT 页数:62 大小:1.37MB
返回 下载 相关 举报
数学建模Matlab基础.ppt_第1页
第1页 / 共62页
数学建模Matlab基础.ppt_第2页
第2页 / 共62页
数学建模Matlab基础.ppt_第3页
第3页 / 共62页
数学建模Matlab基础.ppt_第4页
第4页 / 共62页
数学建模Matlab基础.ppt_第5页
第5页 / 共62页
点击查看更多>>
资源描述

《数学建模Matlab基础.ppt》由会员分享,可在线阅读,更多相关《数学建模Matlab基础.ppt(62页珍藏版)》请在三一办公上搜索。

1、数学建模MATLAB基础知识,主要内容,一.MATLAB介绍,二.MATLAB的数值计算功能,四.MATLAB程序设计,三.MATLAB的符号运算功能,五.MATLAB的基本图形处理功能,一.MATLAB介绍,1、MATLAB的优点,MATLAB被誉为“巨人肩上的工具”。由于使用Matlab编程运算与人进行科学计算的思路和表达方式完全一致,所以不像学习其它高级语言-如Basic、Fortran和C等那样难于掌握,用Matlab编写程序犹如在演算纸上排列出公式与求解问题,所以又被称为演算纸式科学算法语言。语言简单,MATLAB的含义是矩阵实验室(MATRIX LABORATORY),主要用于方便

2、矩阵的存取,其基本元素是无须定义维数的矩阵。MATLAB自问世以来,就是以数值计算称雄。MATLAB进行数值计算的基本单位是复数数组(或称阵列),这使的MATLAB高度“向量化”。由于它不需定义数组的维数,并给出矩阵函数、特殊矩阵专门的库函数,使之在求解诸如信号处理、建模、系统识别、控制、优化等领域的问题时,显得大为简捷、高效、方便,这是其它高级语言所不能比拟的。编程容易,效率高,MATLAB中包括了被称作工具箱(TOOLBOX)的各类应用问题的求解工具。包括信号处理、图象处理、控制系统辨识、神经网络等。功能强大,MATLAB5.3以后的版本中包括了图形界面编辑GUI,改变了以前单一的“在指令

3、窗通过文本形的指令进行各种操作”的状况。操作方便,2、MATLAB的环境,(1)MATLAB的桌面平台,MATLAB桌面平台主要包含以下工具(见Figure1-1),命令窗口命令历史窗口当前目录窗口演示工具工作间管理窗口启动菜单,通过新建命令还可以打开M文件编辑窗口、图形窗口、建模窗口、GUI窗口和部署项目(Deployment Project)窗口。,Figure1-1 MATLAB桌面平台,当前目录窗口,工作间管理窗口,命令窗口,命令历史窗口,演示工具,启动菜单,(2)MATLAB的帮助系统,有三种方式获得MATLAB帮助:,通过使用帮助浏览器(Figure1-2),命令窗口help系列。

4、使用方式是在命令行输入help,help+函数名,Helpwin或者helpdesk。,Figure1-2 帮助浏览器,使用lookfor函数。若要查找一个不知其确切名称的函数名时使用。,其他常用查询辅助命令:,exist 变量检验函数,检验变量是否存在。what 目录中文件列表who 内存变量列表whos 内存变量详细信息which 确定文件位置,(3)MATLAB通用命令和技巧,(4)MATLAB的搜索路径与扩展,搜索路径对话框。菜单中的File/Set Path(见图Figure1-3),path命令。例如:path(path,G:my matlab examples),genpath命

5、令。,editpath或pathtool命令。见图Figure1-3,addpath命令扩展目录。例如:addpath e:my files end(-begin);,Figure1-3 路径设置,二.MATLAB的数值计算功能,1、变量,MATLAB程序中的基本数据单元称为阵列(Array),是一个分为行与列的数据集合。变量被看做是只有一行一列的阵列。MATLAB语言不需要对变量进行事先声明,也不需要指定变量类型,它会自动根据所赋予变量的值或对变量所进行的操作来确定变量的类型。其命名规则为:,(1)变量名的大小写是敏感。(2)变量的第一个字符必须为英文字母,而且不能超过31个字符。(3)变量

6、名可以包含下划线、数字,但不能为空格符、标点。(4)命名变量时可以取一个容易记忆并且能表达出其含义的名称,如汇率,可以定义为exchange_rate。,对于变量作用域,默认情况是局部变量,使用global定义全局变量,而且全局变量常用大写的英文字母表示。,MATLAB预定义的变量如下表所示:,在定义变量时要尽量与避免与这些名字相同,以免改变它们的值,如果已经改变,可以通过clear+变量名 来恢复它的初始值,也可以通过重新启动MATLAB恢复这些值。,2、数字变量,(1)演算纸式的科学计算方式。输入数字运算表达式然后回车即可。,(2)数字的输入输出格式。所有数据均按IEEE浮点标准的长型格式

7、存储。输入格式沿用了C语言的风格和规则;输出格式使用 format+数据格式 命令控制,只影响在屏幕上的显示结果,不影响内部的存储和运算。,3、字符串,使用单引号设定后输入或赋值。如:s=matrix laboratory,字符串的每个字符(包括空格)都是字符数组的一个元素,可以使用size(变量名)查看字符数组的维数。,在MATLAB中,字符串与字符数组(矩阵)基本上是等价的,都是以阵列形式存储。,函数char用来生成字符数组(矩阵)如:s=char(M,A,T,L,A,B);,函数double可以将字符串转化为数值代码(ASCII码),函数cellstr将字符数组转化为字符串。,数值数组和

8、字符串之间的转换函数如下表所示:,字符串操作函数如下表所示:,用eval函数实现字符串执行的功能。如:eval(M num2str(1)=magic(5),4、单元型变量(cell arrays),(1)单元型变量的定义。两种方法:赋值语句和cell函数。,例如:A=1 3-7;2 0 8;0 5 1,This is a text string,1:4。赋值时还可以采用直接对单元型变量中的元素直接赋值的方法,实现方式是用cell函数预先分配存储空间,A=cell(1,3),建立一个一行三列的单元型变量。,单元型变量是一种以任意形式的数组为元素的多维数组。,单元型变量的引用可以使用大括号作为下标

9、的标示(显示全部内容)和小括号作为下标的标示(显示压缩形式)。,(2)相关函数,5、结构型变量,(1)结构型变量类似C语言中的结构体,它和单元型变量的区别在于结构型变量是以指针方式来传递数据,并且每一个元素都有一个独立的名字。两种定义方式,直接赋值定义和由函数struct定义。,结构型变量名=struct(元素名1,元素值1,元素名2,元素值2,),例如:student.name=John;student.addr=123 Main Street;student.city=ZB;%建立一个名为student的结构型变量,(2)相关函数,6、向量及其运算,(1)向量的生成,命令窗口直接输入,使用

10、,元素之间用空格、逗号或者分号隔开。,使用冒号表达式,基本形式为x=x0:step:xn,其中xn为尾元素数值限,而不一定是尾元素的值。当step=1时可省略步长。,生成线性等分向量,使用linspace函数。Y=linspace(x1,x2,n),生成对数等分向量,使用logspace函数。Y=logspace(x1,x2,n),(2)基本运算,数加(减)、数乘、点积(dot函数)、叉积(cross函数)、混合积dot(a,cross(b,c),7、矩阵及其运算,(1)矩阵的生成,命令窗口直接输入,使用,元素之间用空格、逗号或者分号(行与行之间的分隔符)隔开。,创建M文件输入大矩阵。,(2)

11、基本运算,矩阵的四则运算。其中乘法运算要注意相乘的双方有相邻公共维,除法分为左除“”和右除”/”(需要计算逆矩阵),矩阵的逆运算。Inv函数。,矩阵的幂运算。,矩阵的指数运算。expm、expm1、expm2、expm3,矩阵的对数运算。logm,矩阵的特征值函数。eig和eigs,矩阵的奇异值函数。svd和svds,矩阵的条件数函数。cond,condest,rcond,特征值的条件数函数。codeig,范数函数。norm,normest,其他还有秩函数rank,迹函数trace,零空间函数null,正交空间函数orth,伪逆函数pinv等,(3)矩阵分解函数,特征值分解,v,d=eig(X

12、),v,d=eig(X,nobalance),v,d=eig(A,B),复数特征值对角阵与实数块特征值对角阵的转化V,D=cdf2rdf(V,D),U,T=rsf2csf(U,T),奇异值分解,U,S,V=svd(X),LU分解,lu函数,Chol分解,chol函数,QR分解,qr函数,(4)特殊矩阵,空阵,可以用clear从内存中清除,全0阵 zeros,单位阵eye,全1阵ones,随机阵rand/randn,其他特殊矩阵 见下表,(5)矩阵的一些特殊操作,变维。有两种方法,使用冒号(:)和使用函数reshape,使用“:”表达式对两个矩阵进行变维操作,需要预先定义两个矩阵的维数;resh

13、ape有两种形式,分别为reshape(X,M,N)和reshape(X,M,N,P),变向 主要函数如下表所示:,矩阵的抽取 对角线元素抽取函数diag(X,k)/diag(v,k),抽取矩阵X的第k条对角线的元素向量/使得向量v为所得矩阵的第k条对角线元素。上三角元素抽取tril(X,k)和下三角元素抽取triu(X,k),扩展 两种方法:利用对矩阵标示块的赋值命令X(m1:m2,n1:n2)=a生成大矩阵,其中m2-m1+1必须等于a的行维数,n2-n1+1必须等于a的列维数,生成m2 n2维的矩阵X;利用小矩阵组合生成大矩阵,要严格注意矩阵大小的匹配。,7、数组及其运算,(1)基本数组

14、运算,同型矩阵之间的运算通常称为数组运算。(矩阵的数组运算),四则运算。数组的乘除法是指两个同维数组间对应元素之间的乘除法,运算符为”.*”,”./”和”.”。数组与常数之间的运算可以加”.”,也可以不加。,幂运算。.,对每个数组元素的幂运算。,指数运算exp,对数运算log和开方运算sqrt。,(2)数组函数运算,只要把运算的数组带入到函数中就可以了,通用形式为funname(A),(3)逻辑运算,基本逻辑运算。参见下一页表格,逻辑关系函数运算。参见下一页表格,8、多项式运算,(1)多项式的表示方法转化为向量问题,对于多项式,用下面的行向量表示:,系数向量直接输入法,MATLAB自动将向量元

15、素按降幂顺序分配给各系数值。函数poly2sym可以将向量表示的多项式转化为符号多项式表示。,特征多项式输入法,从矩阵求其特征多项式获得,由函数poly实现。,注:由特征多项式生成的多项式首项系数一定为1;n阶矩阵一般产生n次多项式。,由根创建多项式,由函数poly实现。注:若要生成实系数多项式,则根中的复数必定对应共轭;生成的多项式向量包含很小的虚部时可用real命令将其过滤掉。,(2)多项式的运算,多项式求值。输入变量值代入多项式计算时以数组为单元的使用函数polyval;以矩阵(必须为方阵)为计算单元求多项式的值用函数polyvalm;,多项式求根。两种方法,一种是调用函数roots,另

16、一种是通过建立多项式的伴随矩阵再求其特征值的方法得到多项式的所有根。(使用compan和eig函数),多项式的乘除法运算。乘法使用函数conv(向量卷积),除法使用函数deconv,多项式微分。微分函数polyder,多项式拟合。两种方法,一种是由矩阵的除法求解超定方程来进行,另一种是用拟合函数polyfit,调用方式为polyfit(X,Y,n)和p,s=polyfit(X,Y,n),三.MATLAB的符号运算功能,早期的MATLAB不具备符号运算功能,在1993年Mathworks公司从加拿大滑铁卢大学购买了Maple的使用权,并在此基础上,利用Maple函数库,开发了符号计算工具箱(Sy

17、mbolic Toolbox),从此MATLAB便具备了数值计算、符号计算和图形处理三大基本功能于一身,称为在数学计算领域功能最强的语言。,MATLAB实现符号计算功能主要有三种途径:,调用MATLAB开发的各种功能函数进行常用的符号运算,如符号表达式和符号矩阵的基本操作,符号矩阵的运算,符号微积分,符号线性方程求解,符号微分方程求解,特殊数学符号函数以及符号函数图形等。通过使用函数maple.m和mpa.m与Maple接口,给一些特殊专业的人员提供方便。符号函数计算器(Function Calculator)功能。,1、符号表达式的生成,符号表达式包括符号函数和符号方程,区别在于是否带有等号

18、。只要在表达式两端添加分号()就可以创建一个符号函数或者符号方程,例如:f=log(x),g=a*x2+b*x+c=0,也可以用函数sym或syms创建,如f=sym(cos(x),f=sym(sin(x)2=0);syms x;f=sin(x)+cos(x),注意syms不用创建符号方程。,2、符号与数值的转换,常用的方法是函数digits和vpa配合替换函数subs进行转换。,digits函数,digits(D)函数设置有效数字个数为D的近似解精度。vpa函数,R=vpa(S)符号表达式S在digits函数设置下的精度的数值解。vpa(S,D)符号表达式S在digits(D)精度下的数值解

19、。subs函数,subs(S,OLD,NEW)numeric函数,n=numeric(S)将不含自由变量的符号表达式转换为数值形式,效果等同于n=double(sym(S),3、符号函数的运算,(1)复合函数运算。compose函数,其调用形式如下:,compose(f,g)返回f(g(y)compose(f,g,z)返回以z为自变量的复合函数compose(f,g,x,z)返回f(g(z),且使得x为f的独立变量compose(f,g,x,y,z)返回f(g(z),且使得x为f的独立变量,y为g的独立变量,例如若f=cos(x/t),y=sin(y/u),compose(f,g,x,y,z)

20、返回cos(sin(z/u)/t);compose(f,g,x,u,z)返回cos(sin(y/z)/t)。,(2)反函数运算。finverse函数,调用形式为:,g=finverse(f)g=finverse(f,v)返回的符号函数表达式的自变量为符号v,当f包括不止一个变量时最好使用此型。,4、符号矩阵的创立,(1)使用sym函数直接创建符号矩阵。同直接创建数值矩阵相同,(2)用创建子阵的方法创建符号矩阵。要保证同一列的各元素字符串具有相同的长度,(3)将数值矩阵转化为符号矩阵。sym,(4)符号矩阵的索引和修改。同数值矩阵相同,5、符号矩阵的运算,(1)基本运算。包括加(+)、减(-)、

21、乘(*)、除(/,)、转置(),(2)行列式运算。det(A),(3)符号矩阵的逆。inv(A),(4)符号矩阵的秩。rank(A),(5)符号矩阵的幂运算。,(6)符号矩阵的指数运算.数组指数用exp,矩阵指数用expm,(7)符号矩阵的分解。包括特征值分解函数eig,奇异值分解函数svd,约当标准型函数jordan,三角抽取函数diag,tril,triu。,(8)矩阵的空间运算。包括列空间运算colspace,所得结果列的维数即为秩,零空间运算函数null(A)-正交基,null(A,r)-有理基。,(9)符号矩阵的简化。因式分解factor(S),大整数分解factor(sym(N);

22、展开expand(S);同类式合并collect(S)合并同类项,collect(S,v)合并v的同幂项;符号简化simple(S),simplify(S)-简化符号矩阵的每一个元素。分式通分horner-秦九韶型多项式表达式函数(一种嵌套形式,可以减少乘法计算次数),6、符号微积分,(1)符号极限。limit函数,调用形式有:,limit(F,x,a)F在xa条件下的极限值limit(F,a)计算由findsym(a)返回的独立变量趋向于a的极限值limit(F)计算a=0时的极限limit(F,x,a,left)或limit(F,x,a,right)分别求左右极限,(2)符号积分。int函

23、数,调用形式为:,int(S)int(S,v)对自变量v的不定积分int(S,a,b)计算从a到b的定积分,a,b为双精度或符号数量int(S,v,a,b)计算对变量v从a到b的定积分,(3)符号合计函数 symsum,调用形式:,symsum(S)计算符号表达式对由findsym函数返回的符号变量的不定和。symsum(S,v)symsum(S,a,b)和symsum(S,v,a,b),(4)符号微分和差分,微分和差分函数 diff,调用形式:diff(S),diff(S,v)或diff(S,sym(v),diff(S,n)梯度函数gradient,调用形式:FX,FY=gradient(F

24、),FX,FY=gradient(F,H),H作为各方向的点间隔,FX,FY=gradient(F,HX,HY),FX,FY,FZ=gradient(F),FX,FY,FZ=gradient(F,HX,HY,HZ)。多元函数的导数。jacobian(f,v),计算数量或向量f对向量v的Jacobi矩阵,当f为数量时函数返回f的梯度。,7、符号代数方程求解,(1)线性方程组的求解,函数linsolve,solve,可以得到方程的精确解(2)非线性方程的符号解法,使用函数fsolve,调用格式有:,X=fsolve(fun,X0)X=fsolve(fun,X0,options)options为选择

25、参数输入向量X=fsolve(fun,X0,options,gradfun),gradfun为输入函数在X处的偏导数X=fsolve(fun,X0,options,gradfun,P1,P2,)P1,P2为问题定性参数X,options=fsolve(fun,X0,)返回使用的优化方法的参数,注:复杂的符号函数可以在M文件中创建,8、符号微分方程求解,带微分方程的符号解,使用函数dsolve,9、符号函数的二维图,(1)符号函数的简易绘图函数ezplot(f),ezplot(f,xmin,xmax),ezplot(f,xmin,xmax,fig),(2)绘制函数图函数fplot,调用格式有:,

26、fplot(fun,lims)绘制由字符串fun指定函数名的函数在x轴区间lims=xmin xmax的函数图,fun必须为一个m文件的函数名或对变量x的可执行字符串。fplot(fun,lims,tol)tol=1指定以最少n+1个点来绘制图形,默认n=1。fplot(fun,lims,LineSpec)以指定线型绘制图形x,y=fplot(fun,lims,)只返回用来绘图的点的向量值,不绘出图形。,10、图示化函数计算器(funtool),四.MATLAB程序设计,用MATLAB语言编写的程序,称为M文件。M文件有两类:命令式文件和函数式文件。命令式文件:命令行的简单叠加,没有输入参数,

27、也不返回输出参数。它调用MATLAB工作域内所有的数据,而且产生的所有变量都是全局变量,需要用clear或quit清除。函数式文件:解决参数传递和函数调用的问题,有输入参数,可返回输出参数。第一句必须以function语句为引导。其中的变量除了特殊声明外均为局部变量。,编写函数式文件注意事项:,(1)文件名和函数名保持一致。(2)function后的语句定义函数和输入输出参数在函数被调用过程中将按此输入输出格式执行。(3)要养成良好的注释习惯。(4)善于将比较大的任务分解成容易处理的子任务。,函数式文件的形式如下:,function outarg1,outarg2,=fname(inarg1,

28、inarg2,)%H1 comment line%Other comment linesexecutable code.(return),1、控制语句,(1)循环语句,for循环。特点是其循环判断条件是对循环次数的判断,即要预先设定好循环次数。,for v=expression statementsend,expression 表示为m:n或者m:i:n,注:for循环一定要有end作为结束标志。循环语句中可以使用分号;防止出现中间结果。循环语句书写要有层次,增加可读性。如果m或n有小于1的值,结构上合法但是不运行,对于缺少的元素系统会自动添加。循环语句比较耗时,能不用循环的地方要尽量避免使用

29、。,例如:向量t=-1 0 1 3 5,由此生成一个范德蒙矩阵,n=max(size(t);for jj=1:n for ii=1:n a(ii,jj)=t(ii)(n-jj);endend,n=max(size(t);a(:,n)=ones(n,1);for jj=n-1:-1:n a(:,jj)=t.*a(:,jj+1);end,while循环。判断控制可以是一个逻辑判断语句,适用性更加广泛。,格式为:while(expression)statements;end,如果expression为非零值(真),statements重复执行直到expression为假。,(2)选择语句,if-el

30、seif-else-end 其执行步骤如下:,判断表达式紧跟在关键字if后面,首先被计算。若计算结果为0,判断值为假,若为1,则判断值为真若判断值为真,则执行其后语句,否则跳过。,if语句有下面三种格式:,格式一:if 条件 语句组 end,格式二:if 条件 语句组1 else 语句组2 end,格式三:if 条件1 语句组1 elseif 条件2 语句组2 elseif 条件m 语句组m else 语句组m+1 end,switch-case-otherwise语句 格式为,switch 表达式 case 值1 语句组1 case 值2语句组2 case 值m 语句组m otherwise

31、 语句组m+1 end,2、人机交互语句,(1)echo命令。echo命令可使文件命令在执行时可见,常用于命令式文件,有利于程序的调试和演示。格式有:echo on/off,echo file on/off,echo file,echo on/off all,(2)用户输入提示命令input,input命令用于向计算机输入一个参数,并等待键盘输入。调用格式:A=input(提示信息,选项);注:s选项,则允许用户输入一个字符串。,a=input(a=?);b=input(b=?);c=input(c=?);d=b*b-4*a*c;x=(-b+sqrt(d)/(2*a),(-b-sqrt(d)/

32、(2*a),例如:求一元二次方程a2+bx+c=0的根,(3)请求键盘输入命令keyboard,当程序遇到此命令时,MATLAB就将暂时停止运行程序并处于等待键盘输入状态,处理完毕后键入“R”程序将继续执行。在M文件中使用此命令有利于调试及程序运行中修改变量。,(4)等待用户反应命令pause(延迟秒数),暂停程序的执行,等待用户按任意键后继续,在程序调试或看中间结果时很有用。,(5)中断命令break,break语句常用于循环语句或条件语句中。,(6)命令窗口输出函数disp,调用格式:disp(输出项)注:输出项为字符串或矩阵。例如:A=Hello,MATLAB;disp(A)输出为:He

33、llo,MATLAB,str=The value of pi=num2str(pi);disp(str);,(7)格式化输出函数fprintf,用法同C语言中的printf语句,其调用格式为:fprintf(format,data);例如:fprintf(The value of pi is%f n,pi);,3、函数变量及变量作用域,1)MATLAB语言中的变量主要有输入变量,输出变量和函数内部变量。输入变量相当于函数的入口数据,是一个函数操作的主要对象,MATLAB提供nargin函数来控制输入变量的个数。,调用格式一:Function c=test(a,b)if(nargin=1)c=d

34、et(a);elseif(nargin=2)c=a+b;end,调用格式二:nargin(function)返回函数的输入变量的个数。,2)实现不定数目输入变量的函数varargin,对函数的一切输入变量将存储在以varargin命名的单元型变量中。,调用格式:function out1,out2,.=fname(varargin),3)函数inputname,只能在用户定义的M文件中使用。,调用格式:inputname(inputvarno)inputvarno为输入变量列表中的位数,调用该函数后将返回输入变量列表中指定位数的变量在工作空间中的变量名.,与输入变量对应的还有输出变量控制函数n

35、argout,vargout,用法与输入变量控制函数类似。,4、子函数和局部函数,在函数定义中开头位置定义的函数为主函数,而在函数体内定义的其他函数为子函数,子函数只能为主函数或同一主函数下其他的子函数所调用。MATLAB语言把放置在目录private下的函数称为局部函数,这些函数只能由其父目录中的函数调用。,5、程序设计中的辅助函数,1)执行函数,feval用于调用M文件,该函数识别不出多组的输入变量,只能为单组输入变量操作,一般用在以其他函数名为输入变量进行操作的函数内,以实现在程序设计中对未知函数的操作。调用格式为:y1,y2,.yn=feval(function,x1,x2,.,xn)

36、function可以是内置函数也可以是用户自定义的函数。builtin也用来执行函数,不过它执行内置函数。evalin可以对指定的工作空间中的变量进行操作,调用格式为:evalin(workspacename,expression)assignin用来在指定的工作空间中分配变量。,2)容错函数,error(错误信息)中断程序运行,显示错误信息。warning(错误信息)不中断程序执行,只给出警告信息。try 语句段1 catch 语句段2 end 错误捕获lasterr,lastwarn,errortrap on/off等函数,3)时间函数,t=cputime;需要计时程序段;t=cputim

37、e-t;tic;需要计时程序段;toc;t0=clock;需要计时程序段;etime(clock,t0),6、程序设计的优化,(1)以矩阵作为操作主体,循环运算是MATLAB语言最大的弱点,程序设计中要尽量避免使用循环,绝大多数的循环运算可以转换为向量运算。,(2)数据的预定义,虽然MATLAB语言没有规定变量使用时必须预先定义,但是对于未定义的变量,如果操作过程中出现越界赋值时,系统将不得不对变量进行扩充,这大大降低了程序运行的效率。例如:,function c=test1for ii=1:50 c(ii)=det(pascal(ii);end,function c=test2c=zeros

38、(50,1);for ii=1:50 c(ii)=det(pascal(ii);end,t=0.124126s,t=0.006310s,(2)内存管理,pack函数在一定程度上可以解决out of memory的错误,该函数将把内存中所有使用的变量暂存入磁盘,然后再用内存中连续的空间存储这些变量。,7、程序调试,(1)M文件错误的种类。分语法错误和执行错误两种。,语法错误发生在M文件程序代码的解释过程中,一般是由函数参数输入类型有误或者矩阵运算阶数不符等引起的。执行错误的发生是由于在程序运行过程中,出现溢出或死循环等引起的,由程序本身引起的,较难发现解决。,(2)错误的识别,将程序的每一步执行

39、结果输出到命令窗口,检查运行中间的结果,实现方法可以去掉分号,也可以添加断点。使用keyboard函数中断程序。某些情况下可以注释掉函数头,变为脚本文件执行。使用MATLAB调试功能。,(3)调试过程,dbstop用来在M文件中设置断点,dbstop in at dbstatus显示断点信息dbtype显示M文件文本dbstep从断点处继续执行M文件dbstack显示M文件执行时调用的堆栈dbup/dbdown实现工作空间的切换dbquit 退出函数调试状态,8、M文件的调用记录,(1)profile函数,调用格式:,通过记录M文件调用过程可以分析执行过程中各函数的耗时情况,由此可以了解文件执

40、行过程中的瓶颈问题。,profile s=profile(status)显示当前调用状态stats=profile(info)中断调用并返回记录结果,(2)调用记录结果显示,profile report test_eig 将记录输出到test_eig.html文件中。profile plot 将调用记录结果显示为条状图,9、函数句柄,函数句柄用来保存函数的相关信息,尤其是关于函数执行的信息,有以下优点:,可以方便的实现函数间的互相调用。可以获得函数加载的所有方式。,拓宽子函数以及局部函数的使用范围。可以提高函数调用过程中的可靠性。可以减少程序设计的冗余。可以提高重复执行的效率。函数句柄可以与数

41、组、结构型数组以及单元型数组结合定义数据。,(1)函数句柄的创建和显示,通过引导函数名即可创建相应的函数句柄。如:fun_handle=load函数句柄的内容可以通过函数functions(函数句柄)来显示。函数句柄实际是一个结构型数组。,(2)函数句柄的调用和操作,通过feval可以进行函数句柄的调用,格式为:feval(,参数列表)执行以参数列表为输入变量的函数句柄所对应的函数。函数句柄与函数名字符串之间可以进行转换,函数为func2str和str2func函数isa可以判断变量是否为函数句柄。函数isequal可以判断两函数句柄是否相同。,五.MATLAB的基本图形处理功能,1、二维图形

42、,绘制二维图形最常用的函数是plot,调用格式有以下三种:,(1)plot(Y)如果Y为实向量,则以Y的索引坐标作为横坐标,以Y本身的元素作为纵坐标。如果Y为复数向量,则以该向量实部为横坐标,虚部为纵坐标。,y=rand(100,1);plot(y),x=rand(100,1);z=x+y.*i;plot(z),(2)plot(X,Y)此时以X为横坐标,Y为纵坐标。X和Y要求维数必须相同。当变量X和Y是同阶矩阵时,将按照矩阵的行或列进行操作。,(3)plot(X,Y,s)第三个变量用于设置图形显示属性。设置图形的线型、颜色、标记等。,x=0:0.01*pi:2*pi;y=sin(x),cos(

43、x);plot(x,x,y);,x=0:0.01*pi:pi;y=sin(x);z=cos(x);plot(x,y,-k,x,z,-.rd);,2、特殊的二维图形函数,(1)特殊坐标系的二维图形函数,区别于均匀单y轴坐标系而言,具体有对数坐标系、极坐标系和双y轴坐标等。,对数坐标曲线,主要有semilogx,semilogy和loglog,前两个分别以x坐标和y坐标为对数坐标,后一个是双对数坐标。,x=0:.1:10;semilogy(x,10.x),x=1:0.1*pi:2*pi;y=sin(x);semilogx(x,y,-*),x=logspace(-1,2);loglog(x,exp(

44、x),-s)grid on,极坐标系函数polar,调用形式为:polar(theta,rho)或polar(theta,rho,s),双纵坐标(双y轴坐标系)函数plotyy,调用形式为:plotyy(X1,Y1,X2,Y2)plotyy(X1,Y1,X2,Y2,fun)fun可以是plot、semilogx、semilogy或loglogplotyy(X1,Y1,X2,Y2,fun1,fun2)fun1绘制(X1,Y1),fun2绘制(X2,Y2),注:双坐标绘制图形的调用过程中,不能够像前面的plot函数那样对曲线属性进行设置,需要使用句柄图形控制完成。,x=0:0.01:20;y1=2

45、00*exp(-0.05*x).*sin(x);y2=0.8*exp(-0.5*x).*sin(10*x);AX,H1,H2=plotyy(x,y1,x,y2,plot);,(2)二维特殊函数图形,2、三维图形,绘制三维图形最常用的函数有plot3、网图函数以及着色图等,(1)基本绘图命令,plot3 是plot的三位扩展,只是增加了一个维数。调用格式有:,plot3(x,y,z)plot3(X,Y,Z)X,Y,Z是相同阶数的矩阵,绘出三矩阵的列向量的曲线。plot3(X,Y,Z,s)plot3(x1,y1,z1,s1,x2,y2,z2,s2,.)组合图形,以第二种形式为例:,x,y=mesh

46、grid(-2:0.1:2,-2:0.1:2);z=x.*exp(-x.2-y.2);plot3(x,y,z),网图函数,MATLAB对于网格的处理方法是:将xy平面按指定方式分隔成平面网格,然后根据程序中给定的方式计算第三维变量的值,即z轴的值,与对应的xy平面的坐标构成三维点元素,根据由此得到的(x,z)和(y,z)计算各平面的曲线,彼此相连就构成了网格图。,X,Y=meshgrid(x,y)x和y是给定的向量,可以定义网格的划分区域,也可以定义网格的划分方法,X和Y是网格划分后的数值矩阵。mesh(X,Y,Z,C)绘制四个矩阵变量的彩色网格面图形,观测点由view定义,坐标轴由axis定

47、义,C设置颜色,由colormap实现。mesh(X,Y,Z)使用C=Z,即颜色正比于图高。mesh(x,y,Z,C)由两个向量代替矩阵,要求length(x)=n,length(y)=m,且m,n=size(Z),着色函数surf,surf(X,Y,Z,C)输入参数的设置和mesh相同,不同的是mesh绘制的是网格图,而surf绘制的着色的三维表面。两者对比如下图所示,(2)特殊的三维绘图命令,(3)四维表现图,针对v=v(x,y,z)类型的函数,引入了三维实体的四维切片色图,由函数slice实现。,slice(X,Y,Z,V,Sx,Sy,Sz)绘制向量Sx,Sy,Sz中的点沿x,y,z方向

48、切片图,数组X,Y,Z用来定义V的坐标,V是M N P的矩阵。slice(X,Y,Z,V,XI,YI,ZI)绘制沿XI,YI,ZI数组定义的曲面的通过容量V的切片图。slice(V,Sx,Sy,Sz)或slice(V,XI,YI,ZI)默认X=1:N,y=1:M,Z=1:Pslice(.,method)由method指定使用的插值方法,可以为linear,cubic或nearestH=slice(.)返回处理surface对象的向量。,(4)图形处理的基本技术,图形的控制,图形处理的基本技术包括图形控制、图形标注、图形保持以及子图的绘制等,前三项除了使用函数命令之外,还可以直接在生成的图形界面

49、内进行对应修改。,坐标轴控制函数axis,两种调用形式:axis(V),V是一个数组,存储坐标轴的范围,V=Xmin,Xmax,Ymin,Ymax,Zmin,Zmax。axis 控制字符串 用户可以通过选择不同的控制字符串完成对坐标轴的操作。,坐标轴缩放函数zoom,调用形式:zoom 控制字符串 对图形的缩放不会改变图形的基本结构。,平面的坐标网图函数grid,调用形式:grid on/off 图形中绘制/取消坐标网格,坐标轴封闭函数box,调用形式:box on/off 图形四周都显示/常规显示坐标轴,图形的标注,坐标轴标注,主要函数有title,xlabel,ylabel,调用形式为:x

50、label(标注,属性1,属性值1,属性2,属性值2,.)属性包括字体大小,字体名,字体粗细等。,例如:title(正弦函数,FontSize,12,FontWeight,bold,FontName,隶书),标注中的特殊符号有相应的转换字符,例如alpha表示,beta表示,gamma表示,delta表示等等。显示控制bf:黑体,it:斜体,rm:标准形式,fontnamefontname:字体名fontsize(fontsize):字体大小。其他符号如,等只需使用”来引导即可,有分数或指数的形式,相应的指数或分母放到大括号内即可。,例如:title(bf y=e-x2/2);,文本标注函数t

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

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


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号