




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第六章 M文件和函数句柄 matlab语言称为第四代语言称为第四代编程语言,程序简洁、可读性编程语言,程序简洁、可读性很强而且调试十分容易。很强而且调试十分容易。 进行程序设计的进行程序设计的m文件是文件是matlab重要组成部分。重要组成部分。 介绍教材第介绍教材第6章内容章内容 本章内容 1 matlab控制流 2 脚本文件和函数文件 3 函数类别 4 函数句柄1 matlabmatlab的程序结构的程序结构(1) 顺序结构顺序结构 依次顺序执行程序的各条语句依次顺序执行程序的各条语句(2) 分支结构分支结构根据一定条件来执行各条语句。根据一定条件来执行各条语句。 if else end条
2、件控制语句有条件控制语句有3种形式种形式 单分支单分支 、双分支、多分支、双分支、多分支 switch case otherwise end结构结构 仅执行满足条件的分支仅执行满足条件的分支 (3) 循环结构循环结构 被重复执行的一组语句。被重复执行的一组语句。 循环语句主要有:循环语句主要有: for end while end分支结构分支结构根据一定条件来执行的各条语句根据一定条件来执行的各条语句 if else end语句有语句有3种形式种形式(注意注意elseif和和else if之不同之不同) 单分支单分支 if 表达式表达式 执行语句执行语句 end 双分支双分支 if 表达式表达
3、式 语句语句1 else 语句语句2 end多分支多分支 if 表达式表达式1 语句语句1 elseif 表达式表达式2 语句语句2 elseif 表达式表达式3 语句语句3 else 语句语句n end 在在条件表达式条件表达式中,通常用关系、逻辑表达式或代中,通常用关系、逻辑表达式或代数表达式数表达式 关系操作符关系操作符: , ,=, = =, = 逻辑操作符逻辑操作符: &,| , 逻辑函数逻辑函数:isequal 若是相等则为真若是相等则为真 isempty 若是空矩阵则为真若是空矩阵则为真 isstr 若是字符串则为真若是字符串则为真注意:条件表达式允许数组间进行关系、逻辑
4、运算注意:条件表达式允许数组间进行关系、逻辑运算时,数组元素全时,数组元素全1为真,否则为假为真,否则为假functionfunction y= y=abcabc(x)(x) n=length(x); n=length(x); forfor k=1:n k=1:n ifif x(k)-1 x(k)=1 x(k)=1 y(ky(k)=x(k)2;)=x(k)2; elseelse y(k)=x(k)3; y(k)=x(k)3; endendendend% %调用:调用:abcabc(-2,-0.1,1)(-2,-0.1,1)例例6.1-1:编写:编写m函函数,计算函数值数,计算函数值321111
5、xxyxxxx switch-caseswitch-case语法结构:语法结构: switch exprswitch expr case value1 case value1 (commands 1) (commands 1) case value2 case value2 case vlauek case vlauek (commands k) (commands k) otherwise otherwise (commands) (commands) end end例例6.1-26.1-2:根据学生百分制分数进行等级成绩划分:根据学生百分制分数进行等级成绩划分for i=1:10 a(i)
6、=89+i; b(i)=79+i; c(i)=69+i; d(i)=59+i; endc=d,c;A=cell(2,5); A(1,:)=Jack,Marry,Peter,Rose,Tom;A(2,:)=72,83,56,94,100;for k=1:5 switch A2,k case 100, A3,k= 满分; case a, A3,k= 优秀; case b, A3,k= 良好; case c, A3,k= 及格; otherwise, A3,k= 不及格; endendAJack Marry Peter Rose Jack Marry Peter Rose Tom Tom 72 72
7、 83 83 56 56 94 100 94 100 及格及格 良好良好 不及格不及格 优秀优秀 满分满分 for循环循环(定次数的循环定次数的循环),结构语法为:结构语法为: for i = 表达式表达式 (表达式为数组,按列循环)(表达式为数组,按列循环) 可执行语句可执行语句 end例例6.1-3:用:用for循环生成循环生成Hilber方阵方阵( ) 循环法循环法: K=5;K=5; A=zeros(K,K) A=zeros(K,K);%;%预配置内存空间预配置内存空间 for m=1:Kfor m=1:K for n=1:K for n=1:K A(m,n)=1/(m+n-1); A
8、(m,n)=1/(m+n-1); end end end end format rat format rat A A) 1/(1),(jijia向量法向量法: N=5; n=repmat(1:N,N,1); m=n; format rat A3=1./(n+m-1)while end (不定次数的循环不定次数的循环)循环结构语法为:循环结构语法为: while 表达式表达式 循环体语句循环体语句 end 表达式一般是由逻辑运算和关系运算以及一表达式一般是由逻辑运算和关系运算以及一般运算组成的,以判断循环的进行和停止;只般运算组成的,以判断循环的进行和停止;只要表达式的值非要表达式的值非0,继续
9、循环;直到表达式值为,继续循环;直到表达式值为0,循环停止。,循环停止。例例6.1-4:计算计算 , ,N是使是使 的最小的最小function S,N=exm060104(tao)k=0;s=0;d=inf;S=0;while dtao k=k+1; s=s+k; d=1/s; %Rn%Rn通项通项 S=S+d;endN=k;调用调用:S,N=exm060104(0.00001) S = 1.9955, N = 4471NnnSR符号法验证结果符号法验证结果: :syms k n Nsyms k n NSINF=limit(symsum( SINF=limit(symsum( %无穷项和无穷
10、项和 1/symsum(k,1,n),n,1,N),N,inf)1/symsum(k,1,n),n,1,N),N,inf) SINF=2SINF=2N=447;N=447;SN=vpa(symsum(1/symsumSN=vpa(symsum(1/symsum (k,1,n),n,1,N) (k,1,n),n,1,N) %N%N项项(141(141项项) )和和 SN=1.9955SN=1.9955正整数,正整数,=1e-5时时求求S和和N。11nnkRknR控制流的其他常用指令见表控制流的其他常用指令见表6.1-4V1=input(message) %输入赋给变量输入赋给变量V1的值的值V2
11、=input(message,s) %输入赋给变量输入赋给变量V1的字符串的字符串keyboard %控制权交给键盘控制权交给键盘return %控制权主调函数或指令窗控制权主调函数或指令窗break %中止循环或分支程序中止循环或分支程序continue %跳出本次循环,进行下一次循环跳出本次循环,进行下一次循环pause(n) %程序暂停程序暂停n秒秒2 m文件文件 m文件的语法类似于文件的语法类似于c语言,但又有其自身特语言,但又有其自身特点。它只是一个简单的点。它只是一个简单的ASCII码文本文件,执码文本文件,执行程序时逐行解释运行程序。行程序时逐行解释运行程序。 m文件有两类文件有
12、两类独立的独立的m文件文件 称称脚本文件脚本文件 可调用可调用m文件文件 称称函数文件函数文件(1)脚本脚本文件文件 简单的简单的m文件文件 脚本脚本文件实际上是一串指令的集合,与在命文件实际上是一串指令的集合,与在命令窗口逐行执行文件中的所有指令,其结果令窗口逐行执行文件中的所有指令,其结果是一样的。是一样的。没有输入输出参数没有输入输出参数。(2) M函数文件函数文件 需要输入变量,返回输出变量需要输入变量,返回输出变量函数函数m文件的格式:文件的格式: function 返回变量返回变量=函数名(输入变量)函数名(输入变量) %注释说明语句段注释说明语句段 程序语句段程序语句段特定规则特
13、定规则:1.第一行总是以第一行总是以function引导函数申明行引导函数申明行,并说明输入和并说明输入和输出量输出量;2.允许使用比标称数目少的输入允许使用比标称数目少的输入/输出量,实现函数调用输出量,实现函数调用3.m文件的文件名文件的文件名最好最好是是 .m;4.程序中的变量均为局部变量,不保存在工作空间中。程序中的变量均为局部变量,不保存在工作空间中。 其变量只在函数运行期间有效。其变量只在函数运行期间有效。注意注意 : (1) 所创建的所创建的m文件必须纳入文件必须纳入matlab搜索路径后,搜索路径后,才能在才能在matlab命令窗口运行。命令窗口运行。 (2) 注意注意matl
14、ab 缺省路径缺省路径 (3) 主程序主程序(命令命令m文件或脚本文件或脚本m文件文件)和函数子和函数子程序程序(函数函数m文件文件)必须在必须在同一路径同一路径下下 (4)产生句柄函数后产生句柄函数后可不受路径限制可不受路径限制,使函数正使函数正常工作常工作(1)主函数主函数:由第一个由第一个function引出的函数引出的函数(2)子函数子函数:由非第一个由非第一个function引出的引出的,寄生在主函数体内寄生在主函数体内的函数的函数 各函数间通过输入输出宗量或全局变量传递各函数间通过输入输出宗量或全局变量传递(3)匿名函数匿名函数:不以文件形式驻留在文件夹中不以文件形式驻留在文件夹中
15、 创建创建:FH=(arglis)expr %arglis是输入量列表是输入量列表,FH是匿名函数句柄是匿名函数句柄 直接调用直接调用:FH(arglis) 间接调用间接调用:feval(FH,arglis)3 函数类别例例: :匿名函数的调用匿名函数的调用 y=(x)(x.2+x-20) feval(y,2) 或或 y(2)例例6.3-1: 编写一个内含子函数的函数编写一个内含子函数的函数M文件文件function Hr=exm060301(flag)t=(0:50)/50*2*pi;x=sin(t);y=cos(t)Hr=cirline;feval(Hr,flag,x,y,t)%-subf
16、unction-function cirline(wd,x,y,t)switch wd case line plot(t,x,b,t,y,r); case circle plot(x,y,-g) otherwise error(输入宗量错输入宗量错!)endaxis square%主调函数主调函数exm060301(line)HH=exm060301(circle) %绘图并返回子函数句柄绘图并返回子函数句柄t=(0:2*pi/5:2*pi);x=cos(t);y=sin(t);HH(circle,x,y,t) %通过子函数句柄直接调用子函数通过子函数句柄直接调用子函数5 函数句柄函数句柄 函
17、数句柄是函数句柄是matlab的一种数据类型,携带着的一种数据类型,携带着“相应函数创建句柄时的路径、视野、函数相应函数创建句柄时的路径、视野、函数名及重载方法名及重载方法”。 优点优点: 使函数调用像变量一样灵活方便使函数调用像变量一样灵活方便 拓宽子函数包括局部函数的使用范围拓宽子函数包括局部函数的使用范围 提高函数调用的可靠性和软件的重用性提高函数调用的可靠性和软件的重用性 减少程序设计中的冗余减少程序设计中的冗余 提高重复执行的效率提高重复执行的效率1. 函数句柄的创建和显示函数句柄的创建和显示 函数句柄的定义只需在提示符函数句柄的定义只需在提示符后添加相应函数后添加相应函数的函数名的
18、函数名 f_h=plot % %与与f_h=str2func(f_h=str2func(plotplot) )等价等价则则: f_h = : f_h = plot plot 函数句柄的内容通过函数句柄的内容通过functions显示显示 functionsfunctions(f_h)(f_h)ans = ans = function: plot type: simple file: MATLAB built-in function2.函数句柄的调用函数句柄的调用例例6.4-1 为为magic函数创建函数句柄函数创建函数句柄 hm=magic %hm=str2func(magic) hm(4) %直接调用直接调用 feval(hm,4) %间接调用间接调用 间接调用格式间接调用格式: feval(函数句柄,参数列表)函数句柄,参数列表) 例例: f_h=plot %f_h=str2func(plot) feval(f_h,0:10,0:10)例例6.2-1:根据指定不同的半径、色彩、线型,绘出圆周:根据指定不同的半径、色彩、线型,绘出圆周线或圆。线或圆。function S,L=exm06
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 五年级数学(小数乘法)计算题专项练习及答案
- 对分课堂教学模式在高中英语阅读教学中的实验研究
- 童话寓言作文深夜对话600字(7篇)
- CLK2凝聚体重构核斑点促进内含子滞留的功能和机制研究
- 基于啁啾扩频的高精度无线时钟同步技术研究
- 2025至2030中国对氟扁桃酸行业市场现状分析及竞争格局与投资发展报告
- 2025至2030中国家用电风扇行业市场深度分析及竞争格局及有效策略与实施路径评估报告
- 2025至2030中国家居卫生用纸行业发展趋势分析与未来投资战略咨询研究报告
- 儿科风湿热相关知识及护理讲课件
- 2025至2030中国婚纱摄影行业现状规模及投资发展策略分析报告
- 残疾人电子商务培训
- GB/T 45148-2024数字文化馆资源和技术基本要求
- 2024-2025学年度第一学期七年级英语期末试卷
- 2025年春新北师大版数学一年级下册课件 综合实践 设计教室装饰图
- 2025年陕西延长石油集团矿业公司招聘笔试参考题库含答案解析
- 2024-2025学年度四川省宜宾市普通高中高一第一学期期末考试历史试题
- 云南教育强省建设规划纲要(2024-2035年)知识培训
- QC/T 1211-2024乘用车车门内开拉手总成
- 2025年江苏省建筑安全员A证考试题库及答案
- 2025版国家开放大学法学本科《知识产权法》期末纸质考试第五大题案例分析题题库
- 基于感性工学
评论
0/150
提交评论