




已阅读5页,还剩49页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1 第五讲Matlab的程序设计 Matlab语言称为第四代编程语言 程序简洁 可读性很强而且调试十分容易 是Matlab重要组成部分 要充分体现和发挥Matlab的能力 必须掌握Matlab程序设计 2 包括以下内容 M文件的功能和特点M文件的形式数据结构和全局变量程序结构程序流控制字符与字符串函数调用及变量传递M文件的调试 3 一 m文件的功能和特点 用户如想灵活应用Matlab去解决实际问题 充分调用Matlab的科学技术资源 就需要编辑m文件包含Matlab语言代码的文件称为m文件 其扩展名为 m 编辑m文件可使用各种文本编辑器 4 二 Matlab的工作方式 指令行操作方式 通常Matlab以指令驱动模式工作 即在Matlab窗口下当用户输入单行指令时 Matlab立即处理这条指令 并显示结果 这就是Matlab命令行方式 命令行操作时 Matlab窗口只允许一次执行一行上的一个或几个语句 5 在Matlab窗口输入数据和命令进行计算时 当处理复杂问题和大量数据时是不方便的 因此应编辑m文件 命令行方式程序可读性差 而且不能存储 对于复杂的问题 应编写成能存储的程序文件 6 m文件的编程工作方式将Matlab语句构成的程序存储成以m为扩展名的文件 然后再执行该程序文件 这种工作模式称为程序文件模式 程序文件不能在指令窗口下建立 因为指令窗口只允许一次执行一行上的一个或几个语句 7 三 m文件的形式m文件的语法类似于c语言 但又有其自身特点 它只是一个简单的ASCII码文本文件 执行程序时逐行解释运行程序 Matlab是解释性的编程语言 m文件有两类 独立的m文件 称命令文件 可调用m文件 称函数文件 1 命令文件 简单的m文件命令文件实际上是一串指令的集合 与在命令窗口逐行执行文件中的所有指令 其结果是一样的 没有输入输出参数 8 一个用以绘制花瓣 flowerpetal 图案的命令文件theta pi 0 01 pi rho 1 2 sin 5 theta 2 rho 2 cos 10 theta 3 rho 3 sin theta 2 rho 4 5 cos 3 5 theta 3 fori 1 4polar theta rho i pauseend 9 说明 符号 引导的是注释行 不予执行 不需要end作为M文件的结束标志 若把untitle m存放在自己的工作目录中 那么在运行untitle m之前 就使自己的工作目录处于Matlab的搜索路径上 文件运行后 存放在内存的变量可以通过whos指令看到 也可在workspace中看到 10 2 Matlab内置函数文件Matlab自定义的函数文件称内置函数文件 调用内置函数的方法 使用函数名并给出相应的入口 出口参数即可 例如 sin m函数 用typesin查不到 调用格式 y sin 2 x 实际应用中 x 0 2 pi 180 2 pi y sin 2 x plot x y 11 又如sqrt x 求x的平方根abs x 求x的绝对值det a 求行列式的值等等 Matlab拥有大量的内置数学函数 供我们在数值运算和符号运算中调用 12 3 函数m文件 需要输入变量 返回输出变量Matlab用户可以根据需要编辑自己的m文件 它们可以像库函数一样方便的调用 从而极大地扩展了对于某一类特殊问题 如创建了许多m函数文件 则可形成新的工具箱 这种用Matlab语言创建定义新的Matlab函数的功能 正体现了Matlab语言强大的扩展功能 13 函数m文件的格式 function返回变量 函数名 输入变量 注释说明语句段程序语句段特定规则 函数m文件第一行必须以单词function作为引导词 必须遵循如下形式 function m文件的文件名必须是 m 程序中的变量均为局部变量 不保存在工作空间中 其变量只在函数运行期间有效 当函数文件执行完后 这些内部变量将被清除 14 例2 计算向量元素的平均值 1 建立函数文件 内容如下 functiony average x 向量元素的平均值 语法 average x 其中x为输入向量 当输入非向量时 给出错误信息 m n size x if m 1 n 1 m 1 15 2 将文件average m存盘 该文件定义了名为average的新函数 3 在指令窗中运行以下指令 可以求得1到100的平均值 average 1 100 ans 50 5000 16 说明 第一行指令的作用 指明该文件是函数文件 定义函数名 输入参数和输出参数 变量x对函数文件average m来说是局部的 当该函数被调用结束后 变量x不再存在 这可以用who验证 在m文件前面连续几行带符号 的注释行有两个作用 一是起注释作用 二是起help指令联机查询用 如 helpaverage 17 4 系统文件 s函数用于描述系统运动的专用函数 是特殊的m文件 s函数有3类 由simulink结构图自动创建 可用c语言程序设计mex文件直接定义 用函数m文件编写s函数一旦创建 即可在框图中使用 也可在文件中调用 18 S函数的调用格式 sys x0 sfunction t x u flag S函数与函数m文件类似 只是输入 输出变量是限定的 系统状态 状态初值 用户定义的系统 当前时刻 当前状态值 当前输入值 标志量 19 三 数据结构和全局变量 数组 array 字符型 char 结构型 struct 单元型 cell 双精度型 double 数值型 numeric 整型 storage int8 uint8 int16 uint16 int32 uint32 图 Matlab的数据结构 20 数值变量的类型可以用file菜单中preference子菜单中的general命令或format指令控制 isstr可用以检测变量是否为字符型 返回值为1 则是字符型 0则不是 对于其他变量可以用class V 来得到其变量的类型 21 在Matlab中全局变量用global定义 全局变量可以被所有定义该变量为全局变量的函数使用 全局变量的的作用域是整个Matlab的工作区 即全程有效 所以的函数都可以对他进行存取和修改 如 globalXYZ 则将X Y Z定义为全局变量 在程序设计中 全局变量可以带来一些数据传递的方便 但是也破坏了函数对变量的封装 降低了程序的可读性和可靠性 函数文件的内部变量是局部的 与其他函数文件及Matlab内存相互隔离 22 下面为一个使用全局变量的例子 函数文件weight add m functionall weight add x y 两个不同权系数的变量相加globalALPHABETAall ALPHA x BETA y 命令文件 globalALPHABETAALPHA 1 BETA 2 all weight add 1 1 结果 all 3 23 运算符 逻辑操作符 24 例 表示不连续信号 x linspace 0 5 100 0到5中间产生100个数据点y cos x z y 0 y 将cos函数的负数置为零z z 0 3 y 0 将cos函数的负数值增加0 3z x 4 z 将x超过4时z的值置为零plot x z xlabel x ylabel z f x title 一个不连续信号 25 26 四 Matlab的程序结构 Matlab语言的程序结构与其它高级语言是一致的 分为顺序结构 循环结构 分支结构 1 顺序结构 依次顺序执行程序的各条语句 27 2 循环结构 被重复执行的一组语句 循环是计算机解决问题的主要手段 Matlab提供了两种循环方式 for end循环和while end循环 for end语法为 fori 表达式 表达式为一个向量 可执行语句end 28 例 利用for循环求1 2 3 5 的值sum 0 fori 1 5pdr 1 fork 1 ipdr pdr k endsum sum pdr end sum 153 29 while end循环while循环将循环体中的语句循环执行不定次数 语法为 while表达式循环体语句end表达式一般是由逻辑运算和关系运算以及一般运算组成的 以判断循环的进行和停止 只要表达式的值非0 继续循环 直到表达式值为0 循环停止 30 例 用while循环求1 100间整数的和sum 0 i 1 whilei 100sum sum i i i 1 endsumsum 5050 31 3 分支结构 根据一定条件来执行的各条语句 if else end语句有3种形式 if表达式执行语句end if表达式 是语句1else 否语句2end 32 if表达式1 多分支语句1elseif表达式2语句2elseif表达式3语句3 else语句nend 这种结构实现了一种多路选择 比较复杂 可替代一般高级语言中的switch case end语句 33 在条件表达式中 通常都是由关系操作符 等逻辑操作符 等逻辑函数 isequal 若是相等则为真isempty 若是空矩阵则为真isstr 若是字符串则为真 34 例 折扣问题apples 10 cost apples 2 5 ifapples 5cost 0 8 cost end cost 35 例 编写m函数 计算函数值x x 10 functionvalue calculate x ifx 1value x elseifx 10value 2 x 1 elsevalue 3 x 11 end 36 五 Matlab程序流的控制 Matlab的控制语句同c语言有相似之处 但没有c语言复杂 灵活和多变 因而语法比较简单 容易掌握 echo指令 用来控制m文件在执行过程中是否显示echoon 打开所有命令文件的显示方式echooff 关闭所有命令文件的显示方式echo 在以上两者间切换 37 echo对于命令文件函数文件有所不同 命令文件用法简单 echo对所有命令起作用 函数文件用法较复杂 具体请help查询 echofileon 打开file函数文件的显示方式echofileoff 关闭file函数文件的显示方式echofile 切换file函数文件的显示方式echoonall 打开所有函数文件的显示方式echooffall 关闭所有函数文件的显示方式 38 input 提示用户从键盘输入数值 字符串 表达式 例 n input Howmanyapples Howmanyapples 5n 5pause 暂停 等待用户响应可令m文件执行暂停 并在继续执行前按任一个键 39 keyboard 与input类似 功能更强keyboard调用键盘与调用m文件一样 当keyboard在m文件中出现时 它停止文件的执行并控制键盘 用于修改程序 break 中断break中断for while循环语句的执行 在嵌套循环结构中 break进从最里层循环推出 menu 产生一个用户可选择输入的菜单格式 k menu 标题 菜单1 菜单2 40 六 字符与字符串 在Matlab中关于字符串有以下几点规则 在Matlab中所有字符串都用单引号界定后输入或赋值 如 s hello 的运行结果是s hello字符串的每个字符 空格也是字符 都是响应矩阵的一个元素 如上s是一个1 5的矩阵 可用size查得 字符以ASCII码存储 用abs指令可看到字符的ASCII值 abs s ans 104101108108111 41 可用setstr实现ASCII码值向字符的转换 字符串变量也可以用方括号变成更大的 串 如 s s world 得到 s helloworld用eval和feval函数将字符变量转换为宏功能 eval t 和feval t 就是运行包含在t中的内容 42 例 n 5 t 1 i j 1 a zeros n fori 1 nforj 1 na i j eval t endenda 43 例 fun sin cos log k input choosefunctionnumber x input entervalue feval fun k x 44 七 函数调用及变量传递 一个程序可以由若干个函数组成 并通过函数调用来实现控制转移和相互之间的数据传递 1 函数调用在Matlab中函数调用的常用形式是 输出参数1 输出参数2 函数名 输入参数1 输入参数2 注意 函数调用时各参数出现的顺序 应该与函数定义时的顺序一样 否则出错 45 例 给定两个实数a b 一个正整数n 给出k 1 n时的所有和 1 建立一个函数文件pow mfunction out1 out2 pow a b n out1 a b n out2 a b n 2 建立调用上述函数文件的命令文件example ma input pleaseinputa b input pleaseinputb fork 1 10 add pow k sub pow k pow a b k end 46 例 利用递归调用形式计算n的阶乘 1 编写递归调用函数文件factor mfunctionf factor n ifn 1f 1 return elsef n factor n 1 return end 2 运行函数文件factor 4 47 2 参数的传递 Matlab在函数调用上有一个与众不同的地方 函数所传递的参数具有可调性 凭借这种特性 一个函数可以完成多种功能 传递参数数目的可调性来源于如下2个永久变量 nargin函数体内的nargin给出调用该函数时的输入参数数目 nargout函数体内的nargout给出调用该函数时的输出参数数目 48 function x0 y0 myplot fname lims npts angl subdiv MYPLOTPlotafunction MYPLOT fname lims npts angl subdiv Thefirsttwoinputargumentsare required theotherthreehavedefaultvalues i
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 广元市烟草公司2025秋招市场营销类岗位高频笔试题库含答案
- 绿色金融产品创新报告:2025年马其顿绿色金融市场的趋势预测
- 2025河南新乡长垣市公证处招聘合同制人员5人考试参考题库及答案解析
- 2025中交第二航务工程局有限公司校园招聘考试参考题库及答案解析
- 2025年浙教版七年级下册第六章数据与统计图表定向测评试题(含详解)
- 2025天津滨海建设公司招聘4人考试参考题库及答案解析
- 2024-2025学年度银行岗位常考点试卷【模拟题】附答案详解
- 2025云南省农业科学院农产品加工研究所科研助理招聘1人考试参考题库及答案解析
- 2025贵州贵州农业职业学院招聘编外聘用人员及科研助理、教学助理、管理助理工作考试参考题库及答案解析
- 2024年自贡职业技术学院单招《职业适应性测试》综合提升测试卷附参考答案详解【考试直接用】
- 抗过敏药物合理应用专家共识(2025版)解读
- 电子产品出厂质量验收标准
- 项目可行性研究报告评估咨询管理服务方案投标文件(技术方案)
- 2025年事业单位工勤技能-广东-广东水生产处理工一级(高级技师)历年参考题库典型考点含答案解析
- 公共机构建筑能源审计和能耗基准值技术服务方案投标文件(技术标)
- 2025-2026学年人教PEP版(2024)小学英语四年级上册教学计划及进度表
- 2025年廉政知识竞赛答题题目及答案
- 脓毒症护理查房记录
- 供暖减免管理办法
- 360上网行为管理系统产品白皮书
- 自行缴纳社保协议书模板
评论
0/150
提交评论