版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Matlab语言与控制系统CAD任课教师:邬树楠大连理工大学航空航天学院工业装备结构分析国家重点实验室Lesson 3Previously on Lesson 3 (1)Matlab的M文件 (2) Matlab命令的执行方式 交互式的命令执行方式在命令窗口中逐条输入命令,Matlab逐条进行解释、执行;但执行过程不能保留。M文件的程序执行方式将命令编写成程序,存储在文件中(即M文件),当运行该程序后,Matlab会自动执行文件中的命令。M文件的建立: (1)菜单项File New M-File; (2)在命令窗口中输入edit; (3)工具栏上的 New M-FileM文件的打开与保存: (
2、1)菜单项File Open M文件名; (2)在命令窗口中输入edit M文件名; (3)工具栏上的 Open file (4)File Save or Save asM文件的分类: M文件有两种即脚本文件/命令文件(Script File)和函数文件(Function File)。 主要区别为: 脚本文件通常为一连串指令,没有函数声明行,无输入和输出参数;函数文件可以带有输入参数,也可返回输出参数; 脚本运行过程所产生的变量都是全局变量,都驻留在Matlab工作空间内,只要不关闭Matlab ,不使用清内存的clear命令,变量将一直保存。 函数文件中定义的变量为局部变量,函数被调用时,M
3、atlab会为它开辟一个专用的临时工作空间,用来存放中间变量,当执行完函数文件的最后一条命令时就结束该函数的运行,返回函数的输出,同时将临时工作空间清空; 脚本文件可以直接运行,在Matlab命令窗口中输入文件的名字;而函数文件不能直接运行,而要以函数调用的方式调用它。 对用户来说,函数文件可以看做一个黑盒,提供输入,得到输出。因此易于程序模块化,适用于大型程序代码编制。 函数文件: 函数文件(Function File)是Matlab中一种重要且常用的文件,有函数声明行、输入参数和输出参数,以“function”引导。 函数文件的声明结构为: function 输出参数=函数名(输入参数)
4、注释说明部分 函数体语句 return function 输出参数=函数名(输入参数) 注释说明部分 函数体语句 return(1)引导行,表明该M文件是函数文件;(2)等号右侧是函数接收的输入参数,多个参数间用“,”分隔,并用 “( )”括起来;等号左侧是函数运算的结果,多个参数间用“,”分隔,并用“ ”括起来。(3)函数名是函数的名称,当函数文件名与函数名不一致时,Matlab调用时将使用函数文件名。 function 输出参数=函数名(输入参数) 注释说明部分 函数体语句 return(1)紧随引导行之后以%开头,第一行一般包括函数文件名和函数功能简要描述;(2)连续注释行,包括函数输入
5、输出参数的含义以及调用格式说明等,构成在线帮助文本;(3)最后的注释行,包括函数文件编写的信息、版本、日期等,用于软件的档案管理。 function 输出参数=函数名(输入参数) 注释说明部分 函数体语句 return(1)由Matlab的命令构成;(2)当文件执行完最后一条命令或遇到“return”命令时就结束函数文件的运行,同时工作空间的变量会被清除;也可以不使用return语句。 eg.在文本编辑器中建立函数文件,求两点之间的距离: 保存为dist2.m文件: 在文本编辑器中建立如下脚本文件: 点击文本编辑器中的Run或在命令窗口运行fdist2: help dist2:第4章 Matl
6、ab程序设计和M文件4.1 Matlab的M文件4.2 Matlab的流程控制4.3 Matlab程序的调试子函数和私有函数: (1)一个M文件可以包括多个函数,其中一个是主函数,其它是子函数。这些子函数只能被该文件中的其它函数(主函数或子函数)调用,不能被其它文件调用; (2)主函数必须出现在最上方其后可有若干子函数,子函数的次序可随意调整。主函数和各子函数的工作空间都是彼此独立的,函数间信息可通过输入参数、返回值、全局变量等传递。 (3)私有函数是主函数的一种,它只能够在一个特定的限定函数群中可见。私有函数存放在以专有名称private命名的子目录下,只是对其父目录中的函数是可见的; (4
7、)当M文件中需要调用某一个函数时,MATLAB是按照以下顺序来搜寻的:检查此函数是否是子函数;检查此函数是否为私有目录的函数;从所设定的搜寻路径搜索此函数。 (5)搜索过程中,只要找到与第一个文件名相符的函数就会立即取用而停止搜索。 eg01. 定义一个函数文件 function y1=exch(x1,x2) y1=wadd(x3,x4) %subfunction function y2=wadd(xx1,xx2) 主函数子函数4.2 Matlab的流程控制Matlab允许程序员根据某些判决结构来控制程序的执行顺序。 三种常用的结构:顺序结构、分支结构(选择结构)和循环结构 程序流程控制语句:
8、循环控制语句、分支控制语句、其他控制语句、错误控制语句 顺序结构 按照程序中语句的排列顺序依次执行,直到程序的最后一个语句。一般涉及数据的输入、计算处理、数据的输出等内容。 输入:v=input(message) v=input(message,s) %将键入的数值赋给变量v 输出:disp(输出项) %既可以为字符串也可以为矩阵 允许输入字符串 eg02. 求一元二次方程ax2+bx+c=0的根disp(x1=, x(1), x2=, x(2) 运行后输出 暂停:pause(n) pause %按任意键后程序继续执行 Crtl+C %强行终止程序运行 分支结构(选择结构) 分支结构是按照给定
9、的条件成立与否分别执行不同的语句。Matlab中的分支结构语句包括:if 语句、switch语句、try语句。 (1) if 语句:单分支if 语句、双分支if 语句、 多分支if 语句 单分支if 语句: if 条件 语句组end 单分支if 语句: if 条件 语句组end 当条件成立时,则执行语句组,执行完之后继续执行if 语句的后继语句;若条件不成立,则直接执行if 语句的后继语句。 双分支if 语句: if 条件 语句组1else 语句组2end 当条件成立时,则执行语句组1,否则执行语句组2;执行完之后继续执行if 语句的后继语句。 eg03. 计算分段函数 或者 多分支if 语句
10、: if 条件 1 语句组1 elseif 条件2 语句组2 elseif 条件m 语句组m else 语句组m+1 end 语句执行过程如图所示: 嵌套的if 语句:多个if 语句合在一起 if 条件 1 语句组1 else if 条件2 语句组2else end end多分支语句是elseif多分支语句只有一个end eg04. A/B/C/D/F分级 grade 95 A 95 grade 86 B 86 grade 76 C 76 grade 66 D 66 grade 0 F 用if 结构进行分级描述: (a) 多分支if 语句结构 (b) 嵌套if 结构 (a) 多分支if 语句结
11、构 (b) 嵌套if 结构 输出结果为: (2)switch 语句:switch语句根据表达式的取值不同,分别执行不同的语句。switch 表达式case 表达式1语句组1case 表达式2语句组2 otherwise 语句组n end switch语句执行过程:求表达式的值KK=值1?语句组1K=值2?语句组2语句组n是是否 switch语句的下一语句否否 注:switch 子句后的表达式应为标量或者字符串,case 子句后面的表达式为标量、字符串、矩阵(数组)。 若case子句后面的表达式为一个矩阵,则表达式的值等于该矩阵中某个元素时,执行相应的语句。 eg05. 使用switch结构判断
12、学生成绩的等级,90分以上为优,8090为良,7080为中,6070为及格,60分以下为不及格。score=input(plz input the score: );s1=fix(score/10); %取十位数switch s1case 9,10s=优case 8s=良case 7s=中case 6s=及格otherwises=不及格end 输出结果为: (3) try/catch 错误控制语句:一种试探性执行语句,其格式为: try 语句组1 catch 语句组2 end运行程序出现一些不可预见的运行错误时,可以使用错误控制结构try/catch来捕获和处理错误,避免程序出错而不能继续运行
13、。 try/catch 错误控制语句的执行过程:先试探地执行语句段1,如果出现错误则将错误信息赋给保留的laster变量,并放弃语句段1转而执行语句段2中的语句;如果语句段2正确则结束;当语句段1和语句段2都错误,则程序出错。如果语句段1正确则不执行语句段2就结束; eg06. a=1 3 5; c b=1 2 3; c= try 1 6 15 c=a.*b; catch c=a.*b; end循环结构:按照给定的条件,重复的执行指定的语句。Matlab提供了两种实现循环结构的语句:for语句和while语句。 (1)for 语句for 循环变量=表达式1:式2:式3循环体语句 end 初值终
14、值 for 循环变量=表达式1:式2:式3循环体语句 end 注:(1)通常的通常循环变量的控制表达式 为“:”操作,如i=1:10,j=1:2:10等; (2)循环的次数即为表达式的列数,每 次循环中循环变量依次取各列并执行 循环体,直到所有列取完。 for语句执行过程如图所示:分别求3个表达式的值表达式1的值赋给循环变量ii在表达式1的值和表达式3的值之间?循环体语句i增加1个步长是否 eg07. for语句的循环变量还可以是一个列向量,则格式为:for 循环变量=矩阵表达式循环体语句 end 执行过程是依次将矩阵的各列元素赋给循环变量,然后执行循环体语句,直至各列元素处理完毕。 eg08
15、. 求矩阵各行元素之和 (2)while 语句while 条件 循环体语句 end 其执行过程为:若条件成立,则执行循 环体语句,执行后再判断条件是否成 立,如果不成立则跳出循环。P68 图4.5 eg09. 从键盘输入若干个数,当输入0时结束,求这些数的平均值和它们的和。 输出结果为: (3)循环嵌套:一个循环结构的循环体包含另外一个循环结构,就被称为循环的嵌套,或多重循环结构。 多重循环的嵌套层数可以是任意的,处于内部的循环称为内循环,处于外部的循环称作外循环,在设计多重循环时要特别注意内、外循环之间的关系。 eg10. 寻找1,10000内的全部完数。 循环1循环2,求真因子之和判断是否是完数输出结果:m=6,28,496,8128 (4)其它语句 continue语句用于终止当前的循环操作,并直接跳转到该循环的开始再次执行该循环,continue语句一般与if 语句配合使用。 break语句用于终止一个循环操作并立即跳出该循环,以执行该循环体之后的程序,break一般与if语句结合使用。 continue语句与break不同的是continue只结束本次for或while循环,而继续进行下次循环。 eg11.计算f(x)=ex,当f(x)1000时终止计算。 4.3 Matlab程序的调试Matlab在运行过程中,经常出现的错误是语法错误、运行
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 招贤初中灭火和应急疏散预案演练制度
- 慢性病管理质量改进方案
- 深基坑工程安全专项方案
- 临时用电安全保障方案措施标准
- 混凝土泵送机械校验维护方案
- 地下设备基础施工进度调整方案
- 高层预制构件吊装施工组织方案
- 股骨骨折术后康复指南
- 施工噪声污染控制文明管理方案
- 新员工入职行政培训课件
- 血液透析心跳骤停应急预案
- 【MOOC】航空燃气涡轮发动机结构设计-北京航空航天大学 中国大学慕课MOOC答案
- 便利店内部布局及设备投资方案
- 护理一病一品汇报
- 国家职业技术技能标准 6-31-07-02 工业视觉系统运维员 人社厅发202345号
- 医院保洁服务招投标书范本
- DB4416-T 20-2023 蓝莓种植技术规程
- 全新版大学进阶英语第二册-Unit-4-Study-Abroad
- 建筑垃圾减量化专项方案
- 咽部肿瘤-课件
- 福建省危险性较大的分部分项工程安全管理标准
评论
0/150
提交评论