




已阅读5页,还剩69页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2020/5/18,机械工业出版社,Page1,第3章MATLAB程序设计基础,【学习目标】了解M文件的基本知识掌握MATLAB程序的流程控制熟悉变量与函数的使用熟悉内存的管理与优化熟悉MATLAB面向对象程序设计,2020/5/18,机械工业出版社,Page2,第3章网络操作系统概述,2020/5/18,机械工业出版社,Page3,3.1M文件介绍,3.1.1M文件编辑器3.1.2脚本M文件3.1.3函数M文件,2020/5/18,机械工业出版社,Page4,1M文件编辑器,2020/5/18,机械工业出版社,Page5,M文件的基本内容:函数声明行H1行帮助文档注释M文件正文,2020/5/18,机械工业出版社,Page6,脚本M文件通常为一连串的指令,无输入输出参数。脚本M文件与MATLAB主界面共享工作空间,产生的数据和结果都保存在工作空间中。,2脚本M文件,2020/5/18,机械工业出版社,Page7,【例3-1】脚本M文件示例。clc;clearall;closeall;fs=200;t=0:1/fs:1;y=sin(2*pi*20*t);%产生正弦函数z=cos(2*pi*10*t);%产生余弦函数x=y+z;,2脚本M文件,2020/5/18,机械工业出版社,Page8,函数M文件将程序进行抽象封装,提供了参数的入口,并可返回结果,其他M文件可以对函数M文件进行调用。,3函数M文件,2020/5/18,机械工业出版社,Page9,【例3-2】函数M文件示例:将十进制数转换成二进制向量。%deci2bin.m%functiony=deci2bin(x,n)%Thisfunctionconvertthedecimatenumbertobinaryvector%Input:%x:thedecimatenumber%n:thebitnumber%Output:%y:outputabinaryvector%Copyright:wudi,Nov.2010,3函数M文件,2020/5/18,机械工业出版社,Page10,%InformationEngineeringUniversityy=zeros(1,n);i=1;whilex=0,3函数M文件,2020/5/18,机械工业出版社,Page11,3.2流程控制,3.2.1顺序结构3.2.2条件控制结构3.2.3循环控制结构3.2.4程序终止控制3.2.5错误控制结构3.2.6人机交互命令,2020/5/18,机械工业出版社,Page12,顺序结构是程序语句中最基本的结构,这种结构不需要任何流程控制,按照顺序逻辑思路来编写程序,程序的执行顺序从上到下依次执行。,1.顺序结构,2020/5/18,机械工业出版社,Page13,1.顺序结构,【例3-3】顺序结构语句示例。%example3_3.m%clc;clearall;closeall;symsx;s1=2*x;s2=3*s12+4*x;s=s1+s2程序运行结果如下:s=12*x2+6*x,2020/5/18,机械工业出版社,Page14,2.条件控制结构,if语句和switch语句:if、else、elseif语句switch、case、otherwise语句,2020/5/18,机械工业出版社,Page15,2.条件控制结构,【例3-4】多重ifelseif语句示例。%pdbsline.m%functionf=pdbsline(x)%B样条函数的判断函数ifx0f=0;elseifxeps*bx=(a+b)/2;fx=x3-2*x-5;iffx=0break%跳出循环elseifsign(fx)=sign(fa)a=x;fa=fx;elseb=x;fb=fx;endend,2020/5/18,机械工业出版社,Page25,4.程序终止控制,程序终止控制使用return语句,用于结束函数的执行,返回到主调函数中。【例3-10】return语句使用示例:计算矩阵的特征值,当输入为空矩阵时用return跳出。functiond=det(A)ifisempty(A)d=1;returnelse.end,2020/5/18,机械工业出版社,Page26,5.错误控制结构,错误控制结构使用try-catch语句,它是选择结构的一种特殊形式。try-catch语句用来捕捉并处理异常。其语法形式如下:trystatement1%Trytoexecutestatement1catchtrystatement2%AttempttorecoverfromerrorcatchdispOperationfailed%Handletheerrorendend,2020/5/18,机械工业出版社,Page27,5.错误控制结构,【例3-11】try-catch语句使用示例。clc;clearall;closeall;a=1-325;tryindex=input(Entersubscriptofelementtodisplay:);%显示向量中元素disp(a(int2str(index)=num2str(a(index);catchdisp(Illegalsubscript:int2str(index);%出现错误情况end,2020/5/18,机械工业出版社,Page28,6.人机交互命令,input命令语法形式如下:evalResponse=input(prompt)strResponse=input(prompt,s)prompt:表示要在屏幕上显示的字符串;s:表示无论输入什么内容,总是以字符串的形式赋给变量strResponse。,2020/5/18,机械工业出版社,Page29,6.人机交互命令,keyboard命令keyboard命令与input命令类似,当程序运行到keyboard命令时,程序将停止执行,将控制权交给键盘,并显示提示符K等待用户的输入。当处理完后,输入return指令,然后按回车键,将结束键盘模式继续执行下面的程序;,2020/5/18,机械工业出版社,Page30,6.人机交互命令,pause命令语法形式如下:pause:暂停执行程序,等待用户按任意键继续;pause(n):程序暂停n秒后继续执行;pauseon:允许其后连续的pause命令执行暂停程序;pauseoff:使其后连续的pause命令变得无效。,2020/5/18,机械工业出版社,Page31,6.人机交互命令,error命令语法形式如下:error(msgString)error(msgString,v1,v2,.)error(msgIdent,msgString,v1,v2,.,vN)error(msgStruct)msgString:表示显示出错的消息;v1,v2,:显示的消息包含转换格式的字符;msgIdent:给每个错误信息绑定唯一的标识符或消息ID;msgStruct:表示消息的结构体。,2020/5/18,机械工业出版社,Page32,6.人机交互命令,echo命令echoon:打开echo状态,在脚本文件中显示其后所有被执行的命令;echooff:关闭echo状态,在脚本文件中显示该语句前的被执行命令,而不显示其后的执行命令;echo:在echoon与echooff两种状态之间转换;,2020/5/18,机械工业出版社,Page33,3.3变量和函数,3.3.1全局变量和局部变量3.3.2变量的传递3.3.3主函数和子函数3.3.4私有函数3.3.5嵌套函数3.3.6重载函数3.3.7匿名函数,2020/5/18,机械工业出版社,Page34,变量按其作用域,可以分为局部变量和全局变量,如果一个函数内的变量没有特别的声明,那么这个变量为局部变量。如果需要使用全局变量,应当使用global声明而且在任何使用该全局变量的函数中都应加以定义。其语法形式如下:globalXYZ,1.全局变量和局部变量,2020/5/18,机械工业出版社,Page35,1.全局变量和局部变量,【例3-15】局部变量与全局变量使用示例。%global_plot.m%functionglobal_plot()globalX%定义X为全局变量plot_sin(2)plot_cos(2)functionplot_sin(a)globalX%使用全局变量X时也要用global定义y=a*sin(X);figureplot(X,y),2020/5/18,机械工业出版社,Page36,1.全局变量和局部变量,functionplot_cos(a)globalX%使用全局变量X时也要用global定义X=-2*pi:0.1:2*pi;%全局变量被修改z=exp(a);%定义局部变量y=z*cos(X);figureplot(X,y)程序运行结果如下:globalXX=0:0.1:4*pi;global_plot(),2020/5/18,机械工业出版社,Page37,2.变量的传递,几个针对输入输出参数的函数检查函数参数个数:nargin、argout可选输入输出参数:varargin、varargout,2020/5/18,机械工业出版社,Page38,【例3-16】函数参数传递使用示例。%sample.m%functionout=sample(a,b)fprintf(InSample:a=%0.1f,b=%0.1fn,a,b);a=b+2*a;b=a.*b;out=a+b;fprintf(InSample:a=%0.1f,b=%0.1fn,a,b);,2.变量的传递,2020/5/18,机械工业出版社,Page39,在命令窗口输入以下命令:a=5;b=7;fprintf(Beforesample:a=%0.1f,b=%0.1fn,a,b);out=sample(a,b);fprintf(Aftersample:a=%0.1f,b=%0.1fn,a,b);fprintf(Aftersample:out=%0.1fn,out);程序运行结果如下:Beforesample:a=5.0,b=7.0InSample:a=5.0,b=7.0InSample:a=17.0,b=119.0Aftersample:a=5.0,b=7.0Aftersample:out=136.0,2.变量的传递,2020/5/18,机械工业出版社,Page40,【例3-17】nargin和nargout函数使用示例。%myplot.m%functionx0,y0=myplot(x,y,npts,angle,subdiv)%MYPLOTPlotafunction.%MYPLOT(x,y,npts,angle,subdiv)%Thefirsttwoinputargumentsare%required;theotherthreehavedefaultvalues.ifnargin5,subdiv=20;endifnarginavg_mark(89,90,78,75,80,86,90,88,82);theinputvariablenumberis:3themathavgis:84.666667thechineseavgis:86.000000theenglishavgis:82.000000,2.变量的传递,2020/5/18,机械工业出版社,Page45,MATLAB中的主函数是针对其内部嵌套函数和子函数而言的。每一个函数M文件的第一行定义的函数就是主函数,除了主函数外,还可以编写多个嵌套函数或子函数,以便在主函数功能实现中进行调用。,3.主函数和子函数,2020/5/18,机械工业出版社,Page46,私有函数是具有限制性访问权限的函数,它对应的M文件保存在private的文件夹下。私有函数只有private目录的父目录中的函数才可以调用,其他目录的函数不能调用。,4.私有函数,2020/5/18,机械工业出版社,Page47,MATLAB中的嵌套函数是指定义在其他函数内部的函数。,5.嵌套函数,嵌套函数的常用语法形式如下:functionx=A(p1,p2).functiony=B(p3).end.end,2020/5/18,机械工业出版社,Page48,函数重载主要用在实现处理功能相似而参数类型或个数不同的函数编写中。MATLAB中的重载函数通常放置在不同的文件夹下,文件夹名称以符号开头,然后跟一个代表MATLAB数据类型的字符。如double目录下的重载函数的输入参数应该是双精度浮点型,而int32目录下的重载函数输入参数应该是32位整型。,6.重载函数,2020/5/18,机械工业出版社,Page49,匿名函数是面向命令行代码的函数形式,它通常只由一句很简单的声明语句组成。,7.匿名函数,匿名函数创建的语法形式如下:fhandle=(arglist)exprexpr:通常是一个简单的MATLAB变量表达式,实现函数的功能,比如x.2;arglist:参数列表,它指定函数的输入参数列表,对于多个输入参数的情况,通常要用逗号分隔各个参数;符号:MATLAB中创建函数句柄的操作符,表示创建由输入参数列表arglist和expr确定的函数句柄,并把这个函数句柄返回给变量fhandle,这样以后就可以通过fhandle来调用定义好的这个函数。,2020/5/18,机械工业出版社,Page50,7.匿名函数,【例3-21】匿名函数使用示例。A=234;B=567;sumAxBy=(x,y)(A*x+B*y)sumAxBy=(x,y)(A*x+B*y)sumAxBy(5,7)ans=455769,2020/5/18,机械工业出版社,Page51,3.4串演算函数,3.4.1eval函数3.4.2inline函数,2020/5/18,机械工业出版社,Page52,1.eval函数,eval函数的功能就是将括号内的字符串视为语句并运行,其语法形式如下:eval(expression)a1,a2,a3,.=eval(myfun(b1,b2,b3,.)【例3-22】eval函数使用示例:使用eval函数计算字符串。%example3_22.m%clc;clearall;closeall;x=pi;eval(theta=2*x,y=cos(theta);程序运行结果如下:theta=6.2832y=1,2020/5/18,机械工业出版社,Page53,2.inline函数,对于一些较短的函数可以直接使用inline定义为内联函数,这样就不需要将其单独存储为M文件,提高了程序的灵活性。inline(expr):将字符串表达式转换为输入变量自动生成的内联函数;inline(expr,arg1,arg2,.):将字符串表达式转换为arg1、arg2输入变量自动生成的内联函数;inline(expr,n):将字符串表达式转换为x、p1、p2pn输入变量自动生成的内联函数;inline语句得到的返回类型是inlineobject。,2020/5/18,机械工业出版社,Page54,3.5内存的使用,3.5.1内存管理函数3.5.2高效使用内存的策略,2020/5/18,机械工业出版社,Page55,1.内存管理函数,whos函数:显示工作区间中的变量分配了多少内存;pack函数:把已经存在的变量保存到磁盘中,然后重新装入,可以有效减少因为内存碎片出问题的几率;clear函数:从内存中删除变量,释放出一些内存空间;save函数:有选择地把变量保存到磁盘;load函数:把已保存的数据文件重新载入到工作区间;quit函数:退出MATLAB并释放所有分配的内存。,2020/5/18,机械工业出版社,Page56,2.高效使用内存的策略,变量的内存分配使用pack整理内存空间及时保存变量,需要时再读出来使用单精度短整数替代双精度把满秩矩阵转换为稀疏矩阵数组结构和结构数组,2020/5/18,机械工业出版社,Page57,2.高效使用内存的策略,【例3-25】内存使用示例:预置内存与动态分配。程序段一:动态分配内存forn=2:1000 x(n)=x(n-1)+10;end程序段二:预置内存x=zeros(1,1000);fork=2:1000 x(n)=x(n-1)+10;end,2020/5/18,机械工业出版社,Page58,2.高效使用内存的策略,【例3-26】内存使用示例:尽早为大矩阵变量预置内存。程序段一:a=rand(1e6,1);b=rand(1e6,1);clearc=rand(2.1e6,1);程序段二:c=rand(2.1e6,1);cleara=rand(1e6,1);b=rand(1e6,1);,2020/5/18,机械工业出版社,Page59,2.高效使用内存的策略,【例3-26】内存使用示例:比较两个10001000的矩阵X和Y。其中X为单位矩阵,Y为X的稀疏形式。X=eye(1000,1000);Y=sparse(X);whos内存占用空间如下:NameSizeBytesClassAttributesX1000 x10008000000doubleY1000 x100016004doublesparse可以看出,采用稀疏矩阵的存储形式可以有效减少内存空间。,2020/5/18,机械工业出版社,Page60,3.6MATLAB面向对象程序设计,3.6.1面向对象基础3.6.2MATLAB类的定义3.6.3MATLAB对象的使用3.6.4面向对象程序实例,2020/5/18,机械工业出版社,Page61,1.面向对象基础,对象类封装继承多态性,2020/5/18,机械工业出版社,Page62,2.MATLAB类的定义,两个步骤:建立类目录类的定义,2020/5/18,机械工业出版社,Page63,2.MATLAB类的定义,两个步骤:建立类目录类的定义,2020/5/18,机械工业出版社,Page64,建立类目录:路径文件夹文件夹,2.MATLAB类的定义,2020/5/18,机械工业出版社,Page65,类的定义:类定义关键词classdef语法形式如下:classdefClassName.end当该类为一个继承类时,需要在定义类时指定它的父类,其语法形式如下:classdefclassnamesuperclassname有多个父类的情况:classdefclassnamesuper1end,2.MATLAB类的定义,2020/5/18,机械工业出版社,Page67,类的定义:类方法classdefClassNamemethods(AttributeName=value,.)functionx=compute(obj,inc)%compute方法的定义x=obj.y+inc;end.end%methods块.en
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 日语试题试卷及答案
- 税法总论考试题及答案
- 2025年广东省合成氨工艺操作证理论考试练习题库(含答案)
- 2025年阜阳市颍泉区选调区内教师考试笔试试题(含答案)
- 2025年达州市大竹县城区学校考调教师笔试试题(含答案)
- 2025年注册会计师模拟题和答案分析
- 2024年劳务员之劳务员专业管理实务练习题一及答案
- 北京热力保密知识培训课件
- 足部损伤诊疗与护理考核试题及答案
- 2025年临床VTE防治考核题及答案
- 数学集体备课汇报展示
- 食品生产企业采购管理制度
- 2025年养老护理员职业资格技师培训试题(含答案)
- 《鸿蒙应用开发项目教程》全套教学课件
- 四川省广安市2024-2025学年高一下学期期末考试数学试题(含答案)
- 电缆测试技术课件
- 政协大走访活动方案
- 个人养老金课件
- 2025至2030中国氧化钪行业需求状况及未来趋势前景研判报告
- udi追溯管理制度
- 新能源产业园区厂房物业管理及绿色能源应用合同
评论
0/150
提交评论