版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数学建模—MATLAB基础知识第1页第1页主要内容一.MATLAB简介二.MATLAB数值计算功效四.MATLAB程序设计三.MATLAB符号运算功效五.MATLAB基本图形处理功效第2页第2页一.MATLAB简介1、MATLAB长处MATLAB被誉为“巨人肩上工具”。由于使用Matlab编程运算与人进行科学计算思绪和表示方式完全一致,因此不像学习其它高级语言--如Basic、Fortran和C等那样难于掌握,用Matlab编写程序如同在演算纸上排列出公式与求解问题,因此又被称为演算纸式科学算法语言。——语言简朴MATLAB含义是矩阵试验室(MATRIXLABORATORY),主要用于以便矩阵存取,其基本元素是不必定义维数矩阵。MATLAB自问世以来,就是以数值计算称雄。MATLAB进行数值计算基本单位是复数数组(或称阵列),这使MATLAB高度“向量化”。由于它不需定义数组维数,并给出矩阵函数、特殊矩阵专门库函数,使之在求解诸如信号处理、建模、系统辨认、控制、优化等领域问题时,显得大为简捷、高效、以便,这是其它高级语言所不能比拟。——编程容易,效率高第3页第3页MATLAB中包括了被称作工具箱(TOOLBOX)各类应用问题求解工具。包括信号处理、图象处理、控制系统辨识、神经网络等。——功效强大MATLAB5.3以后版本中包括了图形界面编辑GUI,改变了以前单一“在指令窗通过文本形指令进行各种操作”情况。——操作以便2、MATLAB环境(1)MATLAB桌面平台MATLAB桌面平台主要包括下列工具(见Figure1-1)命令窗口命令历史窗口当前目录窗口演示工具工作间管理窗口启动菜单通过新建命令还能够打开M文献编辑窗口、图形窗口、建模窗口、GUI窗口和布署项目(DeploymentProject)窗口。第4页第4页Figure1-1MATLAB桌面平台当前目录窗口工作间管理窗口命令窗口命令历史窗口演示工具启动菜单第5页第5页(2)MATLAB帮助系统有三种方式取得MATLAB帮助:①通过使用帮助浏览器(Figure1-2)②命令窗口help系列。使用方式是在命令行输入help,help+函数名,Helpwin或者helpdesk。Figure1-2帮助浏览器③使用lookfor函数。若要查找一个不知其确切名称函数名时使用。其它惯用查询辅助命令:exist变量检查函数,检查变量是否存在。what目录中文献列表who内存变量列表whos内存变量详细信息which拟定文献位置第6页第6页(3)MATLAB通用命令和技巧命令阐明命令阐明cd显示或更改工作目录hold图形保持开关dir显示目录下文献disp显示变量或文字内容type显示文献内容path显示搜索路径clear清理内存变量save保留内存变量到指定文献clf清除图形窗口load加载指定文献变量pack搜集内存碎片diary日记文献命令clc清除工作窗quit退出MATLABecho工作窗信息显示开关标点定义标点定义:含有各种应用功效.域访问符等;区别行及取消运营显示等…续行符,区别列及函数参数分隔符%注释标识()指定运算过程先后顺序‘字符串标示符[]矩阵定义标志等!调用DOS{}构成单元数组等=赋值运算符第7页第7页(4)MATLAB搜索路径与扩展①搜索路径对话框。菜单中File/SetPath(见图Figure1-3)②path命令。比如:path(path,’G:\mymatlabexamples’)③genpath命令。④editpath或pathtool命令。见图Figure1-3⑤addpath命令扩展目录。比如:addpathe:\myfiles–end(-begin);Figure1-3路径设置
第8页第8页二.MATLAB数值计算功效1、变量MATLAB程序中基本数据单元称为阵列(Array),是一个分为行与列数据集合。变量被看做是只有一行一列阵列。MATLAB语言不需要对变量进行事先申明,也不需要指定变量类型,它会自动依据所赋予变量值或对变量所进行操作来拟定变量类型。其命名规则为:(1)变量名大小写是敏感。(2)变量第一个字符必须为英文字母,并且不能超出31个字符。(3)变量名能够包括下划线、数字,但不能为空格符、标点。(4)命名变量时能够取一个容易记忆并且能表示出其含义名称,如汇率,能够定义为exchange_rate。对于变量作用域,默认情况是局部变量,使用global定义全局变量,并且全局变量惯用大写英文字母表示。MATLAB预定义变量下列表所表示:第9页第9页ans预设计算结果变量名epsMATLAB定义正极小值=2.2204e-16pi内建π值inf∞值,无限大
NaN无法定义一个数目i或
j虚数单位i=j=√-1nargin函数输入参数个数nargout函数输出参数个数realmax最大正实数21023realmin最小正实数2-1022flops浮点运算次数在定义变量时要尽也许与避免与这些名字相同,以免改变它们值,假如已经改变,能够通过clear+变量名来恢复它初始值,也能够通过重新开启MATLAB恢复这些值。2、数字变量(1)演算纸式科学计算方式。输入数字运算表示式然后回车即可。(2)数字输入输出格式。所有数据均按IEEE浮点原则长型格式存储。输入格式沿用了C语言风格和规则;输出格式使用format+数据格式命令控制,只影响在屏幕上显示结果,不影响内部存储和运算。第10页第10页3、字符串使用单引号设定后输入或赋值。如:s=‘matrixlaboratory’,字符串每个字符(包括空格)都是字符数组一个元素,能够使用size(变量名)查看字符数组维数。在MATLAB中,字符串与字符数组(矩阵)基本上是等价,都是以阵列形式存储。函数char用来生成字符数组(矩阵)如:s=char(‘M’,’A’,’T’,’L’,’A’,’B’);函数double能够将字符串转化为数值代码(ASCII码),函数cellstr将字符数组转化为字符串。数值数组和字符串之间转换函数下列表所表示:函数名功效函数名功效num2str数字转化为字符串str2num转换字符串为数字int2str整数转化为字符串sprintf将格式数据写为字符串mat2str矩阵转化为字符串sscanf在格式控制下读字符串第11页第11页字符串操作函数下列表所表示:函数名功效函数名功效strcat链接串strrep以其它串代替此串strvcat垂直链接串strtok寻找串中记号strcmp比较串upper大写转化strncmp比较前n个字符lower小写转化findstr在其它串中找此串blanks生成空串strjust证实字符数组deblank移去串内空格strmatch查找也许匹配字符串ischar字符串检查iscellstr字符串单元阵检查isletter字母检查isspace空格检查hex2num十六进制转双精度数值hex2dec十六进制转十进制dec2hex十进制转十六进制bin2dec二进制转十进制dec2bin十进制转二进制base2dec转换B底字符串为十进制dec2base十进制整数转为B底串stringsstrings函数帮助用eval函数实现字符串执行功效。如:eval(['M'num2str(1)'=magic(5)'])第12页第12页4、单元型变量(cellarrays)(1)单元型变量定义。两种办法:赋值语句和cell函数。比如:A={[13-7;208;051],’Thisisatextstring’,1:4}。赋值时还能够采用直接对单元型变量中元素直接赋值办法,实现方式是用cell函数预先分派存储空间,A=cell(1,3),建立一个一行三列单元型变量。单元型变量是一个以任意形式数组为元素多维数组。单元型变量引用能够使用大括号作为下标标示(显示所有内容)和小括号作为下标标示(显示压缩形式)。(2)相关函数函数功效函数功效cell生成单元型变量deal输入输出处理cellfun对单元型变量中元素作用函数cell2struct单元型变量转为结构型变量celldisp显示单元型变量内容struct2cell结构型变量转为单元型变量cellplot图形显示单元型变量内容iscell是否为单元型变量num2cell将数值数组转为单元型变量reshape改变单元数组结构第13页第13页5、结构型变量(1)结构型变量类似C语言中结构体,它和单元型变量区别在于结构型变量是以指针方式来传递数据,并且每一个元素都有一个独立名字。两种定义方式,直接赋值定义和由函数struct定义。结构型变量名=struct(元素名1,元素值1,元素名2,元素值2,…)比如:=‘John’;student.addr=‘123MainStreet’;student.city=‘ZB’;%建立一个名为student结构型变量(2)相关函数函数功效函数功效struct生成结构型变量rmfield删除属性fieldnames得到属性名isfield判断是否为结构型变量属性getfield得到属性值isstruct判断是否为结构型变量setfield设定属性值第14页第14页6、向量及其运算(1)向量生成①命令窗口直接输入,使用[],元素之间用空格、逗号或者分号隔开。②使用冒号表示式,基本形式为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))第15页第15页7、矩阵及其运算(1)矩阵生成①命令窗口直接输入,使用[],元素之间用空格、逗号或者分号(行与行之间分隔符)隔开。②创建M文献输入大矩阵。(2)基本运算①矩阵四则运算。其中乘法运算要注意相乘双方有相邻公共维,除法分为左除“\”和右除”/”(需要计算逆矩阵)②矩阵逆运算。Inv函数。③矩阵幂运算。^。④矩阵指数运算。expm、expm1、expm2、expm3⑤矩阵对数运算。logm⑥矩阵特性值函数。eig和eigs⑦矩阵奇异值函数。svd和svds⑧矩阵条件数函数。cond,condest,rcond第16页第16页⑨特性值条件数函数。codeig⑩范数函数。norm,normest其它尚有秩函数rank,迹函数trace,零空间函数null,正交空间函数orth,伪逆函数pinv等(3)矩阵分解函数①特性值分解,[v,d]=eig(X),[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函数第17页第17页(4)特殊矩阵①空阵[],能够用clear从内存中清除②全0阵zeros,单位阵eye,全1阵ones,随机阵rand/randn③其它特殊矩阵见下表函数功效函数功效compan伴随阵magic魔方阵galleryHigham测试阵rosser典型对称特性值测试阵hadamardHardamard矩阵toeplitzToeplitz矩阵hankelHankel矩阵pascalPascal矩阵hilbHilbert矩阵vander范德蒙矩阵invhilb反Hilbert矩阵wilkinsonWilkinson’s特性值测试矩阵(5)矩阵一些特殊操作①变维。有两种办法,使用冒号(:)和使用函数reshape第18页第18页使用“:”表示式对两个矩阵进行变维操作,需要预先定义两个矩阵维数;reshape有两种形式,分别为reshape(X,M,N)和reshape(X,M,N,P…)②变向主要函数下列表所表示:函数功效函数功效fiplr矩阵左右翻转diag产生或提取对角阵fipud矩阵上下翻转tril产生下三角fipdim矩阵特定维翻转triu产生上三角Rot90矩阵反时针90翻转③矩阵抽取对角线元素抽取函数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;利用小矩阵组合生成大矩阵,要严格注意矩阵大小匹配。第19页第19页7、数组及其运算(1)基本数组运算同型矩阵之间运算通常称为数组运算。(矩阵数组运算)①四则运算。数组乘除法是指两个同维数组间相应元素之间乘除法,运算符为”.*”,”./”和”.\”。数组与常数之间运算能够加”.”,也能够不加。②幂运算。.^,对每个数组元素幂运算。③指数运算exp,对数运算log和开方运算sqrt。(2)数组函数运算只要把运算数组带入到函数中就能够了,通用形式为funname(A)(3)逻辑运算①基本逻辑运算。参见下一页表格②逻辑关系函数运算。参见下一页表格第20页第20页指令含义函数名<小于lt<=小于等于le>不小于gt>=不小于等于ge==等于eq~=不等于ne&逻辑
与and|逻辑
或or~逻辑
非not指令含义指令含义xor不相同就取1,不然取0isequal相等取1,不然取0any只要有非0就取1,不然取0ismember两个矩阵是属于关系取1,不然取0all全为1取1,不然为0isempty矩阵为空取1,不然取0isnan为数NaN取1,不然为0isletter是字母取1,不然取0(能够是字符串)isinf为数inf取1,不然为0isstudent学生版取1isfinite有限大小元素取1,不然为0isprime质数取1,不然取0ischar是字符串取1,不然为0isreal实数取1,不然取0find寻找非零元素坐标isspace空格位置取1,不然取0isnumeric判断数值矩阵islogical判断逻辑数组第21页第21页8、多项式运算(1)多项式表示办法——转化为向量问题对于多项式用下面行向量表示:①系数向量直接输入法,MATLAB自动将向量元素按降幂顺序分派给各系数值。函数poly2sym能够将向量表示多项式转化为符号多项式表示。②特性多项式输入法,从矩阵求其特性多项式取得,由函数poly实现。注:由特性多项式生成多项式首项系数一定为1;n阶矩阵普通产生n次多项式。③由根创建多项式,由函数poly实现。注:若要生成实系数多项式,则根中复数必定相应共轭;生成多项式向量包括很小虚部时可用real命令将其过滤掉。(2)多项式运算①多项式求值。输入变量值代入多项式计算时以数组为单元使用函数polyval;以矩阵(必须为方阵)为计算单元求多项式值用函数polyvalm;第22页第22页②多项式求根。两种办法,一个是调用函数roots,另一个是通过建立多项式伴随矩阵再求其特性值办法得到多项式所有根。(使用compan和eig函数)③多项式乘除法运算。乘法使用函数conv(向量卷积),除法使用函数deconv④多项式微分。微分函数polyder⑤多项式拟合。两种办法,一个是由矩阵除法求解超定方程来进行,另一个是用拟合函数polyfit,调用方式为polyfit(X,Y,n)和[p,s]=polyfit(X,Y,n)第23页第23页三.MATLAB符号运算功效早期MATLAB不具备符号运算功效,在1993年Mathworks公司从加拿大滑铁卢大学购买了Maple使用权,并在此基础上,利用Maple函数库,开发了符号计算工具箱(SymbolicToolbox),从此MATLAB便具备了数值计算、符号计算和图形处理三大基本功效于一身,称为在数学计算领域功效最强语言。MATLAB实现符号计算功效主要有三种路径:①调用MATLAB开发各种功效函数进行惯用符号运算,如符号表示式和符号矩阵基本操作,符号矩阵运算,符号微积分,符号线性方程求解,符号微分方程求解,特殊数学符号函数以及符号函数图形等。②通过使用函数maple.m和mpa.m与Maple接口,给一些特殊专业人员提供以便。③符号函数计算器(FunctionCalculator)功效。第24页第24页1、符号表示式生成符号表示式包括符号函数和符号方程,区别在于是否带有等号。只要在表示式两端添加分号(’’)就能够创建一个符号函数或者符号方程,比如:f=‘log(x)’,g=‘a*x^2+b*x+c=0’,也能够用函数sym或syms创建,如f=sym(‘cos(x)’),f=sym(‘sin(x)^2=0’);symsx;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)精度下数值解。subs函数,subs(S,OLD,NEW)numeric函数,n=numeric(S)将不含自由变量符号表示式转换为数值形式,效果等同于n=double(sym(S))第25页第25页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)返回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包括不止一个变量时最好使用此型。第26页第26页4、符号矩阵创建(1)使用sym函数直接创建符号矩阵。同直接创建数值矩阵相同(2)用创建子阵办法创建符号矩阵。要确保同一列各元素字符串含有相同长度(3)将数值矩阵转化为符号矩阵。sym(4)符号矩阵索引和修改。同数值矩阵相同5、符号矩阵运算(1)基本运算。包括加(+)、减(-)、乘(*)、除(/,\)、转置(‘)(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’)-有理基。第27页第27页(9)符号矩阵简化。因式分解factor(S),大整数分解factor(sym(‘N’));展开expand(S);同类式合并collect(S)合并同类项,collect(S,v)合并v同幂项;符号简化simple(S),simplify(S)-简化符号矩阵每一个元素。分式通分horner-秦九韶型多项式表示式函数(一个嵌套形式,能够减少乘法计算次数)6、符号微积分(1)符号极限。limit函数,调用形式有:limit(F,x,a)F在x→a条件下极限值limit(F,a)计算由findsym(a)返回独立变量趋向于a极限值limit(F)计算a=0时极限limit(F,x,a,’left’)或limit(F,x,a,’right’)分别求左右极限(2)符号积分。int函数,调用形式为:int(S)int(S,v)对自变量v不定积分int(S,a,b)计算从a到b定积分,a,b为双精度或符号数量int(S,v,a,b)计算对变量v从a到b定积分第28页第28页(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),[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对向量vJacobi矩阵,当f为数量时函数返回f梯度。第29页第29页7、符号代数方程求解(1)线性方程组求解,函数linsolve,solve,能够得到方程准确解(2)非线性方程符号解法,使用函数fsolve,调用格式有:X=fsolve(‘fun’,X0)X=fsolve(‘fun’,X0,options)options为选择参数输入向量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第30页第30页9、符号函数二维图(1)符号函数简易绘图函数ezplot(f),ezplot(f,xmin,xmax),ezplot(f,[xmin,xmax],fig)(2)绘制函数图函数fplot,调用格式有:fplot(fun,lims)绘制由字符串fun指定函数名函数在x轴区间lims=[xminxmax]函数图,fun必须为一个m文献函数名或对变量x可执行字符串。fplot(fun,lims,tol)tol<1用来指定相对误差精度,默认值为0.002fplot(fun,lims,n)n>=1指定以至少n+1个点来绘制图形,默认n=1。fplot(fun,lims,’LineSpec’)以指定线型绘制图形[x,y]=fplot(fun,lims,…)只返回用来绘图点向量值,不绘出图形。第31页第31页10、图示化函数计算器(funtool)第32页第32页四.MATLAB程序设计用MATLAB语言编写程序,称为M文献。M文献有两类:命令式文献和函数式文献。命令式文献:命令行简朴叠加,没有输入参数,也不返回输出参数。它调用MATLAB工作域内所有数据,并且产生所有变量都是全局变量,需要用clear或quit清除。函数式文献:处理参数传递和函数调用问题,有输入参数,可返回输出参数。第一句必须以function语句为引导。其中变量除了特殊申明外均为局部变量。编写函数式文献注意事项:(1)文献名和函数名保持一致。(2)function后语句定义函数和输入输出参数在函数被调用过程中将按此输入输出格式执行。(3)要养成良好注释习惯。(4)善于将比较大任务分解成容易处理子任务。函数式文献形式下列:第33页第33页function[outarg1,outarg2,…]=fname(inarg1,inarg2,…)%H1commentline%Othercommentlines…executablecode..(return)1、控制语句(1)循环语句①for循环。特点是其循环判断条件是对循环次数判断,即要预先设定好循环次数。forv=expressionstatementsendexpression表示为m:n或者m:i:n第34页第34页注:for循环一定要有end作为结束标志。循环语句中能够使用分号;预防出现中间结果。循环语句书写要有层次,增加可读性。假如m或n有小于1值,结构上合法不过不运行,对于缺乏元素系统会自动添加。循环语句比较耗时,能不用循环地方要尽也许避免使用。比如:向量t=[-10135]’,由此生成一个范德蒙矩阵n=max(size(t));forjj=1:nforii=1:na(ii,jj)=t(ii)^(n-jj);endendn=max(size(t));a(:,n)=ones(n,1);forjj=n-1:-1:na(:,jj)=t.*a(:,jj+1);end第35页第35页②while循环。判断控制能够是一个逻辑判断语句,合用性愈加广泛。格式为:
while(expression)statements;
end假如expression为非零值(真),statements重复执行直到expression为假。(2)选择语句①if-[elseif]-…-else-end其执行环节下列:判断表示式紧跟在关键字if后面,首先被计算。若计算结果为0,判断值为假,若为1,则判断值为真若判断值为真,则执行其后语句,不然跳过。if语句有下面三种格式:第36页第36页格式一:if条件语句组
end格式二:if条件语句组1else
语句组2end格式三:if条件1
语句组1elseif条件2
语句组2……elseif条件m
语句组melse
语句组m+1end②switch-case-otherwise语句格式为switch表示式
case值1
语句组1case值2
语句组2……case值m
语句组motherwise
语句组m+1end第37页第37页2、人机交互语句(1)echo命令。echo命令可使文献命令在执行时可见,惯用于命令式文献,有助于程序调试和演示。格式有:echoon/off,echofileon/off,echofile,echoon/offall(2)用户输入提醒命令inputinput命令用于向计算机输入一个参数,并等待键盘输入。调用格式: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))/(2*a)]比如:求一元二次方程a2+bx+c=0根第38页第38页(3)请求键盘输入命令keyboard当程序碰到此命令时,MATLAB就将暂时停止运营程序并处于等待键盘输入状态,处理完毕后键入“R”程序将继续执行。在M文献中使用此命令有助于调试及程序运营中修改变量。(4)等待用户反应命令pause(延迟秒数)暂停程序执行,等待用户按任意键后继续,在程序调试或看中间结果时很有用。(5)中断命令breakbreak语句惯用于循环语句或条件语句中。(6)命令窗口输出函数disp调用格式:disp(输出项)注:输出项为字符串或矩阵。比如:
A='Hello,MATLAB';disp(A)输出为:Hello,MATLABstr=[‘Thevalueofpi=’num2str(pi)];disp(str);第39页第39页(7)格式化输出函数fprintf使用办法同C语言中printf语句,其调用格式为:fprintf(format,data);比如:fprintf(‘Thevalueofpiis%f\n’,pi);3、函数变量及变量作用域1)MATLAB语言中变量主要有输入变量,输出变量和函数内部变量。输入变量相称于函数入口数据,是一个函数操作主要对象,MATLAB提供nargin函数来控制输入变量个数。调用格式一:Functionc=test(a,b)if(nargin==1)c=det(a);elseif(nargin==2)c=a+b;end调用格式二:nargin(‘function’)返回函数输入变量个数。第40页第40页2)实现不定数目输入变量函数varargin,对函数一切输入变量将存储在以varargin命名单元型变量中。调用格式:function[out1,out2,...]=fname(varargin)3)函数inputname,只能在用户定义M文献中使用。调用格式:inputname(inputvarno)inputvarno为输入变量列表中位数,调用该函数后将返回输入变量列表中指定位数变量在工作空间中变量名.与输入变量相应尚有输出变量控制函数nargout,vargout,使用办法与输入变量控制函数类似。4、子函数和局部函数在函数定义中开头位置定义函数为主函数,而在函数体内定义其它函数为子函数,子函数只能为主函数或同一主函数下其它子函数所调用。MATLAB语言把放置在目录private下函数称为局部函数,这些函数只能由其父目录中函数调用。第41页第41页5、程序设计中辅助函数1)执行函数函数名阐明函数名阐明eval字符串调用builtin外部价在调用内置函数evalc执行Matlab表示式assignin工作空间中分派变量feval字符串调用M文献run运营脚本文献evalin计算工作空间中表示式feval用于调用M文献,该函数辨认不出多组输入变量,只能为单组输入变量操作,普通用在以其它函数名为输入变量进行操作函数内,以实现在程序设计中对未知函数操作。调用格式为:[y1,y2,...yn]=feval(function,x1,x2,...,xn)function能够是内置函数也能够是用户自定义函数。builtin也用来执行函数,但是它执行内置函数。evalin能够对指定工作空间中变量进行操作,调用格式为:evalin(workspacename,’expression’)assignin用来在指定工作空间中分派变量。第42页第42页2)容错函数error(‘错误信息’)中断程序运营,显示错误信息。warning(‘错误信息’)不中断程序执行,只给出警告信息。try语句段1catch语句段2end错误捕获lasterr,lastwarn,errortrapon/off等函数3)时间函数函数名阐明函数名阐明now数值型显示当前时间日期datevec转化为向量形式显示日期date字符型显示当前日期calendar当月日历表clock向量形式显示时间和日期weekday当前日期相应星期表示datenum转化为数值型格式显示日期eomday给出指定年月当月最后一天datestr转化为字符型格式显示日期datetick指定坐标轴日期表示式cputime以CPU时间方式计时tictoc计时开关函数etime计算两个时刻时间表t=cputime;{需要计时程序段};t=cputime-t;tic;{需要计时程序段};toc;t0=clock;{需要计时程序段};etime(clock,t0)第43页第43页6、程序设计优化(1)以矩阵作为操作主体循环运算是MATLAB语言最大弱点,程序设计中要尽也许避免使用循环,绝大多数循环运算能够转换为向量运算。(2)数据预定义即使MATLAB语言没有要求变量使用时必须预先定义,但是对于未定义变量,假如操作过程中出现越界赋值时,系统将不得不对变量进行扩充,这大大减少了程序运营效率。比如:functionc=test1forii=1:50c(ii)=det(pascal(ii));endfunctionc=test2c=zeros(50,1);forii=1:50c(ii)=det(pascal(ii));endt=0.124126st=0.006310s第44页第44页(2)内存管理函数名阐明函数名阐明clear从内存中清除变量及函数pack重新分派内存quit退出MATLABsave把指定变量存到磁盘load从磁盘调出指定变量pack函数在一定程度上能够处理outofmemory错误,该函数将把内存中所有使用变量暂存入磁盘,然后再用内存中连续空间存储这些变量。7、程序调试(1)M文献错误种类。分语法错误和执行错误两种。语法错误发生在M文献程序代码解释过程中,普通是由函数参数输入类型有误或者矩阵运算阶数不符等引起。执行错误发生是由于在程序运营过程中,出现溢出或死循环等引起,由程序本身引起,较难发觉处理。第45页第45页(2)错误辨认将程序每一步执行结果输出到命令窗口,检查运营中间结果,实现办法能够去掉分号,也能够添加断点。使用keyboard函数中断程序。一些情况下能够注释掉函数头,变为脚本文献执行。使用MATLAB调试功效。(3)调试过程dbstop用来在M文献中设置断点,dbstopin<M文献名>at<行号>dbstatus显示断点信息dbtype显示M文献文本dbstep从断点处继续执行M文献dbstack显示M文献执行时调用堆栈dbup/dbdown实现工作空间切换dbquit退出函数调试状态第46页第46页8、M文献调用统计(1)profile函数,调用格式:通过统计M文献调用过程能够分析执行过程中各函数耗时情况,由此能够理解文献执行过程中瓶颈问题。profile<优化参数>s=profile(‘status’)显示当前调用状态stats=profile(‘info’)中断调用并返回统计结果(2)调用统计结果显示profilereporttest_eig将统计输出到test_eig.html文献中。profileplot将调用统计结果显示为条状图9、函数句柄函数句柄用来保留函数相关信息,尤其是关于函数执行信息,有下列长处:能够以便实现函数间互相调用。能够取得函数加载所有方式。第47页第47页拓宽子函数以及局部函数使用范围。能够提升函数调用过程中可靠性。能够减少程序设计冗余。能够提升重复执行效率。函数句柄能够与数组、结构型数组以及单元型数组结合定义数据。(1)函数句柄创建和显示通过@引导函数名即可创建相应函数句柄。如:fun_handle=@load函数句柄内容能够通过函数functions(函数句柄)来显示。函数句柄实际是一个结构型数组。(2)函数句柄调用和操作通过feval能够进行函数句柄调用,格式为:feval(<函数句柄>,参数列表)执行以参数列表为输入变量函数句柄所相应函数。函数句柄与函数名字符串之间能够进行转换,函数为func2str和str2func函数isa能够判断变量是否为函数句柄。函数isequal能够判断两函数句柄是否相同。第48页第48页五.MATLAB基本图形处理功效1、二维图形绘制二维图形最惯用函数是plot,调用格式有下列三种:(1)plot(Y)假如Y为实向量,则以Y索引坐标作为横坐标,以Y本身元素作为纵坐标。假如Y为复数向量,则以该向量实部为横坐标,虚部为纵坐标。y=rand(100,1);plot(y)x=rand(100,1);z=x+y.*i;plot(z)第49页第49页(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(x’)];plot([x’,x’],y);x=0:0.01*pi:pi;y=sin(x);z=cos(x);plot(x,y,’--k’,x,z,’-.rd’);第50页第50页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(x),'-s')gridon第51页第51页②极坐标系函数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=200*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');第52页第52页(2)二维特殊函数图形函数名阐明函数名阐明函数名阐明area填充绘图feather矢量图fplot函数图绘制bar条形图stem离散序列饼状图hist直方图barh水平条形图fill多边形填充paretoPareto图comet彗星图stairs阶梯图pie饼图errorbar误差带图contour等高线图plotmatrix分散矩阵绘制ezplot简朴绘制函数图contourf填充等高线图ribbon三维图二维条状显示ezpolar简朴绘制极坐标图scatter散射图第53页第53页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]=meshgrid(-2:0.1:2,-2:0.1:2);z=x.*exp(-x.^2-y.^2);plot3(x,y,z)第54页第54页②网图函数函数名阐明函数名阐明mesh三维网格图meshc将网格与等高线结合meshz屏蔽网格图meshgrid生成
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 幼儿园热胀冷缩课程设计
- 方框课程设计
- 小程序赋能终端课程设计
- 早教疫情主题课程设计
- 把课程设计做好的英文
- 学校个性化服务课程设计
- 影楼合伙合同
- 数字电子秤课程设计论文
- 2024-2030年全钢子午线轮胎市场容量预测与投资前景分析研究报告
- 2024-2030年中国铝盘条行业发展状况及营销战略研究报告
- 用电安全专项检查工作方案模版(3篇)
- 《汽车构造》期末考试复习题库(含答案)
- 2025年广东省春季高考数学仿真模拟试卷试题(含答案解析+答题卡)
- 陕西省咸阳市2023-2024学年高一上学期期末考试 地理 含答案
- 微积分(I)知到智慧树章节测试课后答案2024年秋南昌大学
- 《建设工程施工合同(示范文本)》(GF-2017-0201)
- 大学生朋辈心理辅导智慧树知到期末考试答案章节答案2024年浙江大学
- 中国马克思主义与当代2021版教材课后思考题
- 高一生物期末试卷(必修一第一章至第五章)含答案
- 河道整治工程项目实施的重点难点和解决方案(完整版)
- 作物蒸发蒸腾量计算公式
评论
0/150
提交评论