版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1第十一讲第十一讲程序流控制、 M文件、底层命令的数据输入与输出、程序优化梁丙臣25.2.5 程序流控制n1. return语句n用来终止当前正在执行的函数中的命令,返回调用它的函数,也可用于终止键盘输入的模式,把控制权交给键盘。3例5-15 return控制nA=1,2,3;4,5,6nx,y=size(A)nif isempty (A)ndisp(Matrix A is empty);nreturnnelseif (x=y)ndisp(Matrix A is not a square);nreturnnelsendisp(Matrix A is a square);nendn 42. ec
2、ho命令necho命令可使文件在执行的过程中可见necho on 切换到显示其后所有被执行命令状态necho off切换到显示其后所有被执行命令文件指令不被显示的状态3. Pausen使程序运行暂停,等待用户按任何键继续。54. Break语句n当条件满足时,可使当条件满足时,可使while, for结构的循环提前终结构的循环提前终止。止。n例5-16 计算110的和necho offnn=1nsum=1nwhile n=1&n5n%break;n%endnn=n+1;nsum=sum+n;nendnsumnn 6一、一、MATLBA程序的基本设计原则程序的基本设计原则1、后面的内容是
3、程序的注解、后面的内容是程序的注解,注解使程序更具可读性。,注解使程序更具可读性。2、在主程序开头用、在主程序开头用clear指令清除变量,以消除工作空间中其他变量对指令清除变量,以消除工作空间中其他变量对程序运行的影响。程序运行的影响。但注意在子程序中不要用但注意在子程序中不要用clear。 3、参数值要集中放在程序的开始部分参数值要集中放在程序的开始部分,以便维护。应充分利用,以便维护。应充分利用MATLAB工具箱提供的指令来执行所要进行的运算,在语句行之后输工具箱提供的指令来执行所要进行的运算,在语句行之后输入分号使其及中间结果不在屏幕上显示,以提高执行速度。入分号使其及中间结果不在屏幕
4、上显示,以提高执行速度。4、input指令可以用来输入一些临时的数据;而对于大量参数,则通过指令可以用来输入一些临时的数据;而对于大量参数,则通过建立一个存储参数的子程序,在主程序中用子程序的名称来调用。建立一个存储参数的子程序,在主程序中用子程序的名称来调用。5.3 M文件文件75、程序尽量模块化,也就是、程序尽量模块化,也就是采用主程序调用子程序的采用主程序调用子程序的方法方法,将所有子程序合并在一起来执行全部的操作。,将所有子程序合并在一起来执行全部的操作。6、充分利用、充分利用Debugger来进行程序的调试(设置断点、来进行程序的调试(设置断点、单步执行、连续执行)。单步执行、连续执
5、行)。7、设置好设置好MATLAB的工作路径,以便程序运行的工作路径,以便程序运行。8n进入进入MATLAB的的Editor/Debugger窗口来编辑程序窗口来编辑程序 (edit *.m)n在编辑环境中,文字的不同颜色显示表明文字的不同属性。在编辑环境中,文字的不同颜色显示表明文字的不同属性。绿色:注解绿色:注解;黑色:程序主体黑色:程序主体;红色:属性值的设定;红色:属性值的设定;蓝蓝色:控制流程。色:控制流程。n在运行程序之前,必须设置好在运行程序之前,必须设置好MATLAB的工作路径,的工作路径,使得使得所要运行的程序及运行程序所需要的其他文件处在当前目所要运行的程序及运行程序所需要
6、的其他文件处在当前目录之下,只有这样,才可以使程序得以正常运行。否则可录之下,只有这样,才可以使程序得以正常运行。否则可能导致无法读取某些系统文件或数据,从而程序无法执行。能导致无法读取某些系统文件或数据,从而程序无法执行。n通过通过cd指令在命令窗口中可以更改、显示当前工作路径。指令在命令窗口中可以更改、显示当前工作路径。n通过路径浏览器(通过路径浏览器(path browser)也可以进行设置)也可以进行设置二、二、M文件的编辑及文件的编辑及MATLABMATLAB工作路径的设置工作路径的设置92、程序文件、程序文件n以以.m格式进行存取格式进行存取,包含一连串的,包含一连串的MATLAB
7、指令和必要指令和必要的注解。需要在工作空间中创建并获取变量,也就是说处的注解。需要在工作空间中创建并获取变量,也就是说处理的数据为命令窗口中的数据,理的数据为命令窗口中的数据,没有输入参数,也不会返没有输入参数,也不会返回参数。回参数。(类同于批处理文件类同于批处理文件)n程序运行时只需在工作空间中键入其名称即可。程序运行时只需在工作空间中键入其名称即可。三、三、MATLABMATLAB的程序类型的程序类型MATLABMATLAB的程序类型有三种,一种是在命令窗口下执行的的程序类型有三种,一种是在命令窗口下执行的脚本脚本M M文件文件;另外一种是可以存取的;另外一种是可以存取的M M文件,也即
8、文件,也即程序文程序文件件( (命令文件命令文件) );最后一种是;最后一种是函数(函数(functionfunction)文件。)文件。1 1、脚本、脚本M M文件文件( (历史命令历史命令) )在命令窗口中输入并执行,它所用的变量都要在工作空间中在命令窗口中输入并执行,它所用的变量都要在工作空间中获取,不需要输入输出参数的调用,退出获取,不需要输入输出参数的调用,退出MATLABMATLAB后就释放了。后就释放了。10(1)函数定义行()函数定义行(关键字关键字function)nfunction out1,out2,.=filename(in1,in2,.)n输入和输出(返回)的参数个数
9、分别由输入和输出(返回)的参数个数分别由nargin和和nargout两两个个MATLAB保留的变量来给出。(保留的变量来给出。(支持多态支持多态)(2)第一行帮助行,即)第一行帮助行,即H1行行n以(以(%)开头,作为)开头,作为lookfor指令搜索的行指令搜索的行3 3、函数文件、函数文件 例例myhilb1.m myhilb.m 同样以同样以.m.m格式存取,但文件名必须与函数名相同,函数接格式存取,但文件名必须与函数名相同,函数接受输入参数受输入参数,然后执行并输出结果。用,然后执行并输出结果。用helphelp命令可以显示命令可以显示它的注释说明。它的注释说明。 具有标准的基本结构
10、。具有标准的基本结构。11(3)函数体说明及有关注解)函数体说明及有关注解n以(以(%)开头,用以说明函数的作用及有关内容)开头,用以说明函数的作用及有关内容n如果不希望显示某段信息,可在它的前面加空行如果不希望显示某段信息,可在它的前面加空行(4)函数体语句)函数体语句n函数体内使用的函数体内使用的除返回和输入变量这些在除返回和输入变量这些在function语句中直接引用的变量以外的所有变量都是局部变语句中直接引用的变量以外的所有变量都是局部变量(即需即用),即在该函数返回之后,这些变量量(即需即用),即在该函数返回之后,这些变量会自动在会自动在MATLAB的工作空间中清除掉。如果希望的工作
11、空间中清除掉。如果希望这些中间变量成为在整个程序中都起作用的变量,这些中间变量成为在整个程序中都起作用的变量,则可以将它们设置为全局变量。则可以将它们设置为全局变量。 (global)12 1、子程序与主程序之间的数据是、子程序与主程序之间的数据是通过参数进行传递通过参数进行传递的,子程的,子程序应用主程序传递来的参数进行计算后,将结果返回主程序应用主程序传递来的参数进行计算后,将结果返回主程序。序。 可利用可利用return命令终止当前子程序。命令终止当前子程序。 四、声明子程序(函数程序)变量四、声明子程序(函数程序)变量2 2、如果一个函数内的变量没有特别声明,那么这个变量只、如果一个函
12、数内的变量没有特别声明,那么这个变量只在函数内部使用,即为局部变量。在函数内部使用,即为局部变量。如果两个或多个函数共用如果两个或多个函数共用一个变量(或者说在子程序中也要用到主程序中的变量,注一个变量(或者说在子程序中也要用到主程序中的变量,注意不是参数),那么可以用意不是参数),那么可以用globalglobal来将它声明为全局变量。来将它声明为全局变量。 全局变量的使用可以减少参数传递,合理利用全局变量可全局变量的使用可以减少参数传递,合理利用全局变量可以提高程序执行的效率。以提高程序执行的效率。135.4 底层I/O命令的数据输入与输出n5.4.1 数据的输入n1 直接生成数据法n例5
13、18 直接在命令窗口输入nA=3 2 1;8 5 2;9 6 3145.4.1 数据的输入n2 使用M文件将文件中的数据输入:n建立一个M文件,在文件中输入数据。n例519 M文件输入数组nfunction matrix1nB=3 2 1;8 5 2;9 6 3;1 1 1155.4.1 数据的输入n3 使用load命令载入数据:n常用调用格式load filename.matn例520 load文件nData_B.txtn3 2 1n8 5 2n9 6 3nload Data_B.txtnY=Data_B.3165.4.2 数据的输出n数据的输出主要有3种方式n(1)直接在终端上显示结果n(
14、2)diary命令n用来将命令控制窗口中的有关文件内容以文本的形式存入一个指定文件中,以后可以整理编辑成所需的形式。ndiary filename %将内容记录到文件名为将内容记录到文件名为filename的文件中的文件中ndiary on 再打开上面曾打开过的diary文件,并返回到diary命令原处ndiary off %暂停执行diary命令17(3)save命令nsave filename options 保存当前工作空间的所有变量到filename制定的文件中,此文件后缀名通常为mat。如果不指定filename变量,则会默认保存到matlab.mat这个文件中。n具有一下optio
15、ns:n-append 在已经存在的mat文件中保存此变量。n-format 确定要保存变量的格式,有下面这些格式:n-ascii 8位ASCII格式.-ascii -tabs 8位ASCII格式以tab位分隔符.-ascii -double 16位ASCII格式.-ascii -double -tabs 16位ASCII格式以tab位分隔符.-mat 默认格式n下面使一些例子:n1:save test.mat 把当前工作空间的所有变量保存到test.matn2:save(d:mymfilesjune10,vol,temp,-ASCII) 把变量vol和temp保存到June10中,使用ASC
16、II 格式18例521nwhondiary data2.mnb=1:10nb1=eye(4);nb2=magic(5);ndiary offnwhonc=b2.2ntype data2.mnb=1:10nb1=eye(4);nb2=magic(5);ndiary offndiary on nb3=5:15ndiary offntype data2.mnb=1:10nb1=eye(4);nb2=magic(5);ndiary offnb3=5:15ndiary off195.4.3 文件读写的I/O命令函数n1 fopenn常用调用格式:nfn=fopen(filename,permission
17、)nfopent(all)nfilename,permission=fopen(fn)nfopen(filename)n(1)filename 要打开的文件名n(2)permission 指定的操作方式,常用的有r,w,a(追加)等。Rb,wb,ab针对二进制的文件。Rt wt at针对文本格式的文件。n(3)fn 指的是被打开文件的文件代号。如果打开成功为正整数。否则为1。n(4)all指列出用于当前已经打开的除标准文件外全部文件的文件代号。205.4.3 文件读写的I/O命令函数n2 fclosen常用调用格式:nfclose(fn)nfclose(all)n(1)fn 指的是关闭文件文件
18、代号为fn的文件。n(2)all关闭代号为0,1,2之外所有已经打开的文件。215.4.3 文件读写的I/O命令函数n3 fprintfn常用调用格式:nfprintf(fn,format,A,)将输出表中的矩阵A等按照format做指定的格式输出代号为fn的文件中。例523fprintf函数应用nx = 0:.1:1; y = x; exp(x);n fid = fopen(exp.txt,w);n fprintf(fid,%6.2f %12.8fn,y);n fclose(fid);n 0.00 1.00000000 0.10 1.10517092 0.20 1.22140276 0.30
19、 1.34985881 0.40 1.49182470 0.50 1.64872127 0.60 1.82211880 0.70 2.01375271 0.80 2.22554093 0.90 2.45960311 1.00 2.71828183n 225.4.3 文件读写的I/O命令函数n4 fscanfn常用调用格式:nA,cn=fscanf(fn,format,size)将文件代号为fn的文件读入到数组A中。5 fread函数A,cn=fread(fn,size)从代号为fn的文件中读取二进制数据到数组A,参数如同fscanf6 fwrite函数cn=fwrite(fn,A)将数组A的元
20、素写入代号为fn的文件中。7 fgetl函数fgetl(fn):从代号为fn的文件中读入一行字符串8 fseek函数status=fseek(fn,offset,origin):定位代号为fn的文件位置指针status,参数origin为所指定的位置,offset为偏移量。9 ftell函数position=ftell(fn):返回fn文件位置指针status的当前位置。如果访问失败将返回1。235.5 程序的优化n1 环向量化n把循环向量化把循环向量化,能缩短程序的长度,提高程序的执行效率。n2 预定义变量nMatlab将任何一个变量都看成一个矩阵一个变量都看成一个矩阵。245.6 面向对象
21、的编程综述n1 类和对象n类是抽象的概念,由对象集合而成。表征着各个对象所共同具有的数据结构。nisa(),iscell(),ischar()等逻辑判断函数n2 面向对象编程的内涵n充分利用“类”“对象”进行的编程成为面向对象编程。n(1)创建类目录n(2)选定待建类的数据结构n(3)对象构造函数n(4)显示函数n(5)与其他类之间的转换函数25n% cfwave.mn% curve fitting for 1/nt wave heightn% compare the expected maximum wave heightn%nn=10:1:1000;nra=nthwave(n);nhrms
22、=1;nhs=hrms*nthwave(3);nr = hrms / hs % it was found that Hrms/Hs = 0.7063nhu=hrms*nthwave(n);nlogn=log(n);ny=polyval(polyfit(sqrt(logn),hu,2),sqrt(logn); n%4.2164e-002 7.2920e-001 6.0004e-001 from polyfit(sqrt(logn),hu,2), if n=2:1:1000npolyfit(sqrt(logn),hu,2)nloglog(n,abs(1-y./hu);n%n% hmax1=0.70
23、7*hs* ( sqrt(log(n); n% hmax2= hmax1 + 0.707*hs*0.5772 ./ (2 * sqrt(log(n) ) ;n% dif1 = hmax1 - hu;n% dif2 = hmax2 - hu;n% dif3 = hmax2 - hmax1;n% plot(n,dif1,-,n,dif2,-.,n,dif3,-)26nfunction hn = nthwave(n)n%-n% function hn = nthwave(n)n%n% Return the ratio of 1/n(th) and rms wave height based on n
24、% Rayleigh model. (See D&D for analytical formula)n%n% The input n can be an arrayn%n% If n =3, it returns the ratio of significant wave heightn% with the rms wave height (hn 1.416)n%n% If n =1, it returns the ratio of mean wave heightn% with the rms wave height (hn 0.886)n%n%-nht = sqrt(log(n);nhn = ht + sqrt(pi)/2 .*n .*erfc(ht);27nfunction Kr,alpha = refra(d,T,alpha_o)n%-n% function Kr,alpha = refra(d,T,alpha_o)n%n% Calculate refraction coefficient and angle of incidencen% (between wave crests and bottom contours) for parallel, n% straigh
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024物业租赁中的让与担保 甲方与乙方合同范本
- 2025年度体育赛事代理合同终止及赛事推广合作协议4篇
- 2025年度商铺物业管理与应急响应预案合同4篇
- 2025年度变压器租赁及电力设备租赁期满续租合同3篇
- 2024艺人广告代言服务合同范本
- 2025年度主题餐厅投资合作协议范本3篇
- 2025年度水果种植基地与电商平台合作合同3篇
- 2024跨境电子商务融资代建合同
- 2025年度安全生产信息化服务合同范本3篇
- 2025年度新能源汽车充电站车棚建设与运营承包合同4篇
- 2024高考复习必背英语词汇3500单词
- 消防控制室值班服务人员培训方案
- 《贵州旅游介绍》课件2
- 2024年中职单招(护理)专业综合知识考试题库(含答案)
- 无人机应用平台实施方案
- 挪用公款还款协议书范本
- 事业单位工作人员年度考核登记表(医生个人总结)
- 盾构隧道施工数字化与智能化系统集成
- 【企业盈利能力探析文献综述2400字】
- 2019年医养结合项目商业计划书
- 2023年店铺工程主管年终业务工作总结
评论
0/150
提交评论