版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
关于文件和函数句柄第1页,共32页,2022年,5月20日,23点35分,星期四6.1 Matlab控制流for循环while循环if-else-end结构switch-case结构第2页,共32页,2022年,5月20日,23点35分,星期四6.1.1 For循环结构forn=array {commands}end>>forn=1:10 x(n)=sin(n*pi/10);end>>xx=Columns1through60.30900.58680.80900.95111.00000.95110.8090Columns8through100.58680.30900.0000第3页,共32页,2022年,5月20日,23点35分,星期四for循环不能用for循环内重新赋值循环变量n来终止;在for循环内接受任何有效的MATLAB数组;for循环可按需要嵌套;当有一个等效的数组方法来解给定的问题时,应避免用for循环;为了得到最大的速度,在for循环被执行之前,应预先分配数组
.for循环的重要说明第4页,共32页,2022年,5月20日,23点35分,星期四>>forn=1:10 x(n)=sin(n*pi/10); n=10;end>>xx=Columns1through60.30900.58680.80900.95111.00000.95110.8090Columns8through100.58680.30900.0000第5页,共32页,2022年,5月20日,23点35分,星期四>>forn=1:5 form=5:-1:1 A(n,m)=n^2+m^2; end disp(n)end12345>>AA=2510162658132029101318253416202532412629344150第6页,共32页,2022年,5月20日,23点35分,星期四>>n=1:10;>>x=sin(n.*pi/10)x=Columns1through60.30900.58680.80900.95111.00000.95110.8090Columns8through100.58680.30900.0000第7页,共32页,2022年,5月20日,23点35分,星期四>>x=zeros(1,10);%preallocatedmemoryforx>>forn=1:10 x(n)=sin(n*pi/10);end;第8页,共32页,2022年,5月20日,23点35分,星期四6.1.2 while循环结构whileexpression {commands}end>>num=0;EPS=1;>>while(1+EPS)>1 EPS=EPS/2; num=num+1;end>>numnum= 53>>EPS=EPS^2EPS= 2.2204e-016第9页,共32页,2022年,5月20日,23点35分,星期四6.1.3 if-else-end分支结构ifexpression{commands}endifexpressioncommandsevaluatedifTrueelsecommandsevaluatedifFalseendifexpression1commandsevaluatedifexpression1isTrueelseifexpression2commandsevaluatedifexpression2isTrueelseif…….elsecommandsevaluatedifnootherexpressionisTrueend第10页,共32页,2022年,5月20日,23点35分,星期四break和continue的用法>>EPS=1;>>fornum=1:1000EPS=EPS/2;if(1+EPS)<=1 EPS=EPS*2 breakendendEPS=2.2204e-016>>numnum=53>>EPS=1;>>fornum=1:1000EPS=EPS/2;if(1+EPS)>1 continueendEPS=EPS*2breakendEPS=2.2204e-016>>numnum=53第11页,共32页,2022年,5月20日,23点35分,星期四6.1.4 switch-case结构switchex ex为一标量或字符串
casetest1 (commands1)
casetest2 (commands2)
…… casetestk (commandsk)
otherwise
(commands)第12页,共32页,2022年,5月20日,23点35分,星期四fori=1:10;a{i}=89+i;b{i}=79+i;c{i}=69+i;d{i}=59+i;end;c=[d,c];Name={'Jack','Marry','Peter','Rose','Tom'};Mark={62,83,56,94,100};Rank=cell(1,5);S=struct('Name',Name,'Marks',Mark,'Rank',Rank);fori=1:5switchS(i).Markscase100 S(i).Rank='满分'; casea S(i).Rank='优秀';caseb S(i).Rank='良好';casec S(i).Rank='及格';otherwise S(i).Rank='不及格';endend第13页,共32页,2022年,5月20日,23点35分,星期四disp(['学生姓名','得分','等级']);disp('')fori=1:5;disp([S(i).Name,blanks(6),num2str(S(i).Marks),blanks(6),S(i).Rank]);end;学生姓名得分等级
Jack62及格Marry83良好Peter56不及格Rose94优秀Tom100满分第14页,共32页,2022年,5月20日,23点35分,星期四6.2 脚本文件和函数文件6.2.1 M脚本文件的特点脚本文件运行后,所产生的所有变量都驻留在Matlab基本工作空间中。一串按用户意图排列而成的(包括控制流向指令在内的)Matlab指令集合;第15页,共32页,2022年,5月20日,23点35分,星期四6.2.2 M函数文件及其特点1.函数文件的第一行总是以“function”引导的“函数申明行”(functiondeclarationline)。4.在函数文件中调用某脚本文件,那该脚本文件运行产生的所有变量都存放于该函数空间之中。3.函数工作空间。2.输入参量包含传递这个函数的数据,输出变量包含从这个函数输出的变量。第16页,共32页,2022年,5月20日,23点35分,星期四6.2.3 函数文件一般结构1.函数申明行:以关键字function开头,定义函数名以及函数的输入输出参量。函数名和文件名必须相同。5.函数体:Matlab指令,接收输入参量,进行程序流控制,得到输出参量。4.编写和修改记录:以%开头。标志编写及修改该文件的作者、日期和版本记录,用于软件档案管理。3.在线帮助文件文本:以%开头。通常包括:函数输入输出参量的含义,调用格式说明。2.H1行:以%开头,包括大写体的函数文件名;运用关键词要描述的函数功能。第17页,共32页,2022年,5月20日,23点35分,星期四[circle.m]functionsa=circle(r,s)%CIRCLE 绘制一个半径为r,颜色为s的圆周线或圆周面% r 指定半径的数值% s 指定线色的字符串% sa 圆面积%%circle(r) 利用蓝实线画半径为r的圆周线.%circle(r,s) 利用串s指定的线色画半径为r的圆周线.%sa=circle(r) 计算圆面积,并画半径为r的蓝色圆面.%sa=circle(r,s) 计算圆面积,并画半径为r的s色圆面.%编写于1999年4月6日,修改于1999年8月26日。第18页,共32页,2022年,5月20日,23点35分,星期四ifnargin>2error('输入参量太多。');end;ifnargin==1s='b';end;t=0:pi/100:2*pi;x=r*exp(i*t);ifnargout==0plot(x,s);elsesa=pi*r*r;fill(real(x),imag(x),s)end第19页,共32页,2022年,5月20日,23点35分,星期四第20页,共32页,2022年,5月20日,23点35分,星期四6.2.4 局部变量和全局变量局部变量
存在于函数空间内部的中间变量,产生于该函数的运行过程中,其影响范围也仅限于该函数本身。全局变量通过global指令定义变量,没有采用global定义的函数或基本工作空间,将无权享用全局变量。第21页,共32页,2022年,5月20日,23点35分,星期四关于全局变量的说明1.如果全局变量的内容发生了变化,那么其他函数空间以及基本工作空间中的同名变量也就随之变化。5.全局变量损害函数的封装性,不提倡使用全局变量。4.建议选用大写字符命名全局变量。3.对全局变量的定义必须在变量被使用之前进行。建议把全局变量的定义放在函数体的首行位置。2.除非与全局变量联系的所有工作空间都被删除,否则全局变量依然存在。。第22页,共32页,2022年,5月20日,23点35分,星期四6.3Matlab的函数类别Matlab的M文件分为M脚本文件和M函数文件。函数Function又被分为主函数、子函数、嵌套函数、私用函数、匿名函数等。第23页,共32页,2022年,5月20日,23点35分,星期四主函数和子函数
一个matlab的M文件可以包含多个函数,第一个函数为主函数,其它则为子函数。保存时文件名与主函数名相同。外部程序只能对主函数进行调用。第24页,共32页,2022年,5月20日,23点35分,星期四子函数的特点:
1.子函数的结构与M函数文件基本相同。
2.在M文件内,主函数位置为首位不可改变,子函数位置次序可随意。
3.子函数只能被同一文件中的主函数或其它子函数调用。
4.通过文件名调用时,子函数的优先级低于内装函数。
5.主、子函数的工作空间互相独立,变量传递利用哑实结合。第25页,共32页,2022年,5月20日,23点35分,星期四匿名函数参见课本P251第26页,共32页,2022年,5月20日,23点35分,星期四6.4 函数句柄函数句柄(Functionhandle)是Matlab6启用的新数据类型。它保存着“为该函数创建句柄时的路径、函数名以及可能存在的重载方法”。第27页,共32页,2022年,5月20日,23点35分,星期四6.4.1 函数句柄的创建和观察>>hsin=@sin;>>class(hsin)ans=function_handle>>size(hsin)ans=11>>CC=functions(hsin)CC=function:'sin'type:'simple'file:'MATLABbuilt-infunction'第28页,共32页,2022年,5月20日,23点35分,星期四6.4.2 函数句柄的基本用法不管名为FunName的函数文件是否在当前搜索路径上,不管它是否是子函数或私用函数,只要句柄hfun存在,那么它代表的函数总能被正确地执行。在不使用函数句柄的情况下,对FunName进行多次调用时,每次都要为该函数进行全面的路径搜索,这直接影响计算速度。借助hfun可完全克服这种无谓的时间消耗。1.[argout1,argout2,…,argoutn]=FunName(argin1,argin2,…,arginn)2
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 代理记账业务协议
- LED展览馆照明系统安装合同
- 二手车买卖过户协议
- 企业并购还款协议
- 三人合作风能项目协议
- 产权车位转让合同范本
- 乒乓球馆租赁合同范本
- 仓储合同范本
- 产业园区物业管理服务大纲
- 仓储中心配电房施工合同
- htr-pm通风空调系统核电站hvac简介
- 工业园区企业环境风险和安全隐患排查情况表优质资料
- 工程建设标准强制性条文电力工程部分
- 从局部到整体:5G系统观-概要版-vivo通信研究院
- GB/T 22844-2009配套床上用品
- GB/T 14683-2017硅酮和改性硅酮建筑密封胶
- 无人机校企合作协议
- 《百团大战》历史课件
- 八年级上册道德及法治非选择题专项训练
- 2023年徐州市国盛控股集团有限公司招聘笔试题库及答案解析
- 机械课程设计~二级减速器设计教程
评论
0/150
提交评论