




已阅读5页,还剩69页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2020 4 7 机械工业出版社 Page1 第3章MATLAB程序设计基础 学习目标 了解M文件的基本知识掌握MATLAB程序的流程控制熟悉变量与函数的使用熟悉内存的管理与优化熟悉MATLAB面向对象程序设计 2020 4 7 机械工业出版社 Page2 第3章网络操作系统概述 2020 4 7 机械工业出版社 Page3 3 1M文件介绍 3 1 1M文件编辑器3 1 2脚本M文件3 1 3函数M文件 2020 4 7 机械工业出版社 Page4 1 M文件编辑器 2020 4 7 机械工业出版社 Page5 M文件的基本内容 函数声明行H1行帮助文档注释M文件正文 2020 4 7 机械工业出版社 Page6 脚本M文件通常为一连串的指令 无输入输出参数 脚本M文件与MATLAB主界面共享工作空间 产生的数据和结果都保存在工作空间中 2 脚本M文件 2020 4 7 机械工业出版社 Page7 例3 1 脚本M文件示例 clc clearall closeall fs 200 t 0 1 fs 1 y sin 2 pi 20 t 产生正弦函数z cos 2 pi 10 t 产生余弦函数x y z 2 脚本M文件 2020 4 7 机械工业出版社 Page8 函数M文件将程序进行抽象封装 提供了参数的入口 并可返回结果 其他M文件可以对函数M文件进行调用 3 函数M文件 2020 4 7 机械工业出版社 Page9 例3 2 函数M文件示例 将十进制数转换成二进制向量 deci2bin m functiony deci2bin x n Thisfunctionconvertthedecimatenumbertobinaryvector Input x thedecimatenumber n thebitnumber Output y outputabinaryvector Copyright wudi Nov 2010 3 函数M文件 2020 4 7 机械工业出版社 Page10 InformationEngineeringUniversityy zeros 1 n i 1 whilex 0 3 函数M文件 2020 4 7 机械工业出版社 Page11 3 2流程控制 3 2 1顺序结构3 2 2条件控制结构3 2 3循环控制结构3 2 4程序终止控制3 2 5错误控制结构3 2 6人机交互命令 2020 4 7 机械工业出版社 Page12 顺序结构是程序语句中最基本的结构 这种结构不需要任何流程控制 按照顺序逻辑思路来编写程序 程序的执行顺序从上到下依次执行 1 顺序结构 2020 4 7 机械工业出版社 Page13 1 顺序结构 例3 3 顺序结构语句示例 example3 3 m clc clearall closeall symsx s1 2 x s2 3 s1 2 4 x s s1 s2程序运行结果如下 s 12 x 2 6 x 2020 4 7 机械工业出版社 Page14 2 条件控制结构 if语句和switch语句 if else elseif语句switch case otherwise语句 2020 4 7 机械工业出版社 Page15 2 条件控制结构 例3 4 多重if elseif语句示例 pdbsline m functionf pdbsline x B样条函数的判断函数ifx 0f 0 elseifx 1f x elseifx 2f 2 x elsef 0 end 2020 4 7 机械工业出版社 Page16 2 条件控制结构 例3 5 switch语句使用示例 对于一个给定的百分数成绩 输出相应的等级成绩 marks m functionmarks score num score rem score 10 10 switchnum switch语句case9disp 优秀 case8disp 良好 case7disp 中等 2020 4 7 机械工业出版社 Page17 2 条件控制结构 case6disp 及格 otherwisedisp 不及格 end 2020 4 7 机械工业出版社 Page18 3 循环控制结构 for循环while循环continue语句break语句 2020 4 7 机械工业出版社 Page19 3 循环控制结构 for语句的语法形式如下 forindex 初始值 增量 结束值programstatements end 例3 6 for循环使用示例 利用双重循环为二维矩阵赋值 clc clearall closeall fori 1 3forj 1 3a i j 1 i j 1 endend 2020 4 7 机械工业出版社 Page20 3 循环控制结构 while语句的语法形式如下 whileexpressionprogramstatements end 2020 4 7 机械工业出版社 Page21 3 循环控制结构 例3 7 while循环使用示例 求多项式x3 2x 5的根 a 0 fa Inf b 3 fb Inf whileb a eps b while循环条件x a b 2 fx x 3 2 x 5 ifsign fx sign fa a x fa fx elseb x fb fx endend 2020 4 7 机械工业出版社 Page22 3 循环控制结构 continue语句用在循环结构中 表示当前循环不再继续 而是直接跳到下一次循环中 当有嵌套循环时 continue语句只与和自己最近的一个for或while循环有关 例3 8 continue语句使用示例 用continue语句计算1 100之间所有的偶数相加之和 sum 0 fori 1 100ifrem i 2 1continue 跳过后面的语句进行下一次循环endsum sum i end 2020 4 7 机械工业出版社 Page23 3 循环控制结构 break语句用于终止for循环或while循环 当程序运行到break语句时 程序将跳出最近的循环体 执行循环体后面的语句 例3 9 break语句使用示例 用break语句求多项式x3 2x 5的根 example3 9 m clc clearall closeall a 0 fa Inf b 3 fb Inf 2020 4 7 机械工业出版社 Page24 3 循环控制结构 whileb a eps bx a b 2 fx x 3 2 x 5 iffx 0break 跳出循环elseifsign fx sign fa a x fa fx elseb x fb fx endend 2020 4 7 机械工业出版社 Page25 4 程序终止控制 程序终止控制使用return语句 用于结束函数的执行 返回到主调函数中 例3 10 return语句使用示例 计算矩阵的特征值 当输入为空矩阵时用return跳出 functiond det A ifisempty A d 1 returnelse end 2020 4 7 机械工业出版社 Page26 5 错误控制结构 错误控制结构使用try catch语句 它是选择结构的一种特殊形式 try catch语句用来捕捉并处理异常 其语法形式如下 trystatement1 Trytoexecutestatement1catchtrystatement2 Attempttorecoverfromerrorcatchdisp Operationfailed Handletheerrorendend 2020 4 7 机械工业出版社 Page27 5 错误控制结构 例3 11 try catch语句使用示例 clc clearall closeall a 1 325 tryindex input Entersubscriptofelementtodisplay 显示向量中元素disp a int2str index num2str a index catchdisp Illegalsubscript int2str index 出现错误情况end 2020 4 7 机械工业出版社 Page28 6 人机交互命令 input命令语法形式如下 evalResponse input prompt strResponse input prompt s prompt 表示要在屏幕上显示的字符串 s 表示无论输入什么内容 总是以字符串的形式赋给变量strResponse 2020 4 7 机械工业出版社 Page29 6 人机交互命令 keyboard命令keyboard命令与input命令类似 当程序运行到keyboard命令时 程序将停止执行 将控制权交给键盘 并显示提示符K等待用户的输入 当处理完后 输入return指令 然后按回车键 将结束键盘模式继续执行下面的程序 2020 4 7 机械工业出版社 Page30 6 人机交互命令 pause命令语法形式如下 pause 暂停执行程序 等待用户按任意键继续 pause n 程序暂停n秒后继续执行 pauseon 允许其后连续的pause命令执行暂停程序 pauseoff 使其后连续的pause命令变得无效 2020 4 7 机械工业出版社 Page31 6 人机交互命令 error命令语法形式如下 error msgString error msgString v1 v2 error msgIdent msgString v1 v2 vN error msgStruct msgString 表示显示出错的消息 v1 v2 显示的消息包含转换格式的字符 msgIdent 给每个错误信息绑定唯一的标识符或消息ID msgStruct 表示消息的结构体 2020 4 7 机械工业出版社 Page32 6 人机交互命令 echo命令echoon 打开echo状态 在脚本文件中显示其后所有被执行的命令 echooff 关闭echo状态 在脚本文件中显示该语句前的被执行命令 而不显示其后的执行命令 echo 在echoon与echooff两种状态之间转换 2020 4 7 机械工业出版社 Page33 3 3变量和函数 3 3 1全局变量和局部变量3 3 2变量的传递3 3 3主函数和子函数3 3 4私有函数3 3 5嵌套函数3 3 6重载函数3 3 7匿名函数 2020 4 7 机械工业出版社 Page34 变量按其作用域 可以分为局部变量和全局变量 如果一个函数内的变量没有特别的声明 那么这个变量为局部变量 如果需要使用全局变量 应当使用global声明而且在任何使用该全局变量的函数中都应加以定义 其语法形式如下 globalXYZ 1 全局变量和局部变量 2020 4 7 机械工业出版社 Page35 1 全局变量和局部变量 例3 15 局部变量与全局变量使用示例 global plot m functionglobal plot globalX 定义X为全局变量plot sin 2 plot cos 2 functionplot sin a globalX 使用全局变量X时也要用global定义y a sin X figureplot X y 2020 4 7 机械工业出版社 Page36 1 全局变量和局部变量 functionplot cos a globalX 使用全局变量X时也要用global定义X 2 pi 0 1 2 pi 全局变量被修改z exp a 定义局部变量y z cos X figureplot X y 程序运行结果如下 globalXX 0 0 1 4 pi global plot 2020 4 7 机械工业出版社 Page37 2 变量的传递 几个针对输入输出参数的函数检查函数参数个数 nargin argout可选输入输出参数 varargin varargout 2020 4 7 机械工业出版社 Page38 例3 16 函数参数传递使用示例 sample m functionout sample a b fprintf InSample a 0 1f b 0 1f n a b a b 2 a b a b out a b fprintf InSample a 0 1f b 0 1f n a b 2 变量的传递 2020 4 7 机械工业出版社 Page39 在命令窗口输入以下命令 a 5 b 7 fprintf Beforesample a 0 1f b 0 1f n a b out sample a b fprintf Aftersample a 0 1f b 0 1f n a b fprintf Aftersample out 0 1f n out 程序运行结果如下 Beforesample a 5 0 b 7 0InSample a 5 0 b 7 0InSample a 17 0 b 119 0Aftersample a 5 0 b 7 0Aftersample out 136 0 2 变量的传递 2020 4 7 机械工业出版社 Page40 例3 17 nargin和nargout函数使用示例 myplot m function x0 y0 myplot x y npts angle subdiv MYPLOTPlotafunction MYPLOT x y npts angle subdiv Thefirsttwoinputargumentsare required theotherthreehavedefaultvalues ifnargin 5 subdiv 20 endifnargin 4 angle 10 endifnargin 3 npts 25 end 2 变量的传递 2020 4 7 机械工业出版社 Page41 ifnargout 0plot x y elsex0 x y0 y end 2 变量的传递 2020 4 7 机械工业出版社 Page42 例3 18 varargin函数使用示例 利用varargin实现输入任意多个学生的各科成绩 求各科成绩的平均值 avg mark m function mathavg chineseavg englishavg avg mark varargin L length varargin fprintf theinputvariablenumberis d n L mathsum 0 数学总成绩初始值chinesesum 0 语文总成绩初始值englishsum 0 英语总成绩初始值 2 变量的传递 2020 4 7 机械工业出版社 Page43 fori 0 Lmathsum mathsum varargin i 1 chinesesum chinesesum varargin i 2 englishsum englishsum varargin i 3 endmathavg mathsum L 平均值chineseavg chinesesum L englishavg englishsum L fprintf themathavgis f n mathavg fprintf thechineseavgis f n chineseavg fprintf theenglishavgis f n englishavg 2 变量的传递 2020 4 7 机械工业出版社 Page44 在命令窗口中调用此函数并运行 程序运行结果如下 avg mark 89 90 78 75 80 86 90 88 82 theinputvariablenumberis 3themathavgis 84 666667thechineseavgis 86 000000theenglishavgis 82 000000 2 变量的传递 2020 4 7 机械工业出版社 Page45 MATLAB中的主函数是针对其内部嵌套函数和子函数而言的 每一个函数M文件的第一行定义的函数就是主函数 除了主函数外 还可以编写多个嵌套函数或子函数 以便在主函数功能实现中进行调用 3 主函数和子函数 2020 4 7 机械工业出版社 Page46 私有函数是具有限制性访问权限的函数 它对应的M文件保存在private的文件夹下 私有函数只有private目录的父目录中的函数才可以调用 其他目录的函数不能调用 4 私有函数 2020 4 7 机械工业出版社 Page47 MATLAB中的嵌套函数是指定义在其他函数内部的函数 5 嵌套函数 嵌套函数的常用语法形式如下 functionx A p1 p2 functiony B p3 end end 2020 4 7 机械工业出版社 Page48 函数重载主要用在实现处理功能相似而参数类型或个数不同的函数编写中 MATLAB中的重载函数通常放置在不同的文件夹下 文件夹名称以符号 开头 然后跟一个代表MATLAB数据类型的字符 如 double目录下的重载函数的输入参数应该是双精度浮点型 而 int32目录下的重载函数输入参数应该是32位整型 6 重载函数 2020 4 7 机械工业出版社 Page49 匿名函数是面向命令行代码的函数形式 它通常只由一句很简单的声明语句组成 7 匿名函数 匿名函数创建的语法形式如下 fhandle arglist exprexpr 通常是一个简单的MATLAB变量表达式 实现函数的功能 比如x 2 arglist 参数列表 它指定函数的输入参数列表 对于多个输入参数的情况 通常要用逗号分隔各个参数 符号 MATLAB中创建函数句柄的操作符 表示创建由输入参数列表arglist和expr确定的函数句柄 并把这个函数句柄返回给变量fhandle 这样以后就可以通过fhandle来调用定义好的这个函数 2020 4 7 机械工业出版社 Page50 7 匿名函数 例3 21 匿名函数使用示例 A 234 B 567 sumAxBy x y A x B y sumAxBy x y A x B y sumAxBy 5 7 ans 455769 2020 4 7 机械工业出版社 Page51 3 4串演算函数 3 4 1eval函数3 4 2inline函数 2020 4 7 机械工业出版社 Page52 1 eval函数 eval函数的功能就是将括号内的字符串视为语句并运行 其语法形式如下 eval expression a1 a2 a3 eval myfun b1 b2 b3 例3 22 eval函数使用示例 使用eval函数计算字符串 example3 22 m clc clearall closeall x pi eval theta 2 x y cos theta 程序运行结果如下 theta 6 2832y 1 2020 4 7 机械工业出版社 Page53 2 inline函数 对于一些较短的函数可以直接使用inline定义为内联函数 这样就不需要将其单独存储为M文件 提高了程序的灵活性 inline expr 将字符串表达式转换为输入变量自动生成的内联函数 inline expr arg1 arg2 将字符串表达式转换为arg1 arg2输入变量自动生成的内联函数 inline expr n 将字符串表达式转换为x p1 p2 pn输入变量自动生成的内联函数 inline语句得到的返回类型是 inlineobject 2020 4 7 机械工业出版社 Page54 3 5内存的使用 3 5 1内存管理函数3 5 2高效使用内存的策略 2020 4 7 机械工业出版社 Page55 1 内存管理函数 whos函数 显示工作区间中的变量分配了多少内存 pack函数 把已经存在的变量保存到磁盘中 然后重新装入 可以有效减少因为内存碎片出问题的几率 clear函数 从内存中删除变量 释放出一些内存空间 save函数 有选择地把变量保存到磁盘 load函数 把已保存的数据文件重新载入到工作区间 quit函数 退出MATLAB并释放所有分配的内存 2020 4 7 机械工业出版社 Page56 2 高效使用内存的策略 变量的内存分配使用pack整理内存空间及时保存变量 需要时再读出来使用单精度短整数替代双精度把满秩矩阵转换为稀疏矩阵数组结构和结构数组 2020 4 7 机械工业出版社 Page57 2 高效使用内存的策略 例3 25 内存使用示例 预置内存与动态分配 程序段一 动态分配内存forn 2 1000 x n x n 1 10 end程序段二 预置内存x zeros 1 1000 fork 2 1000 x n x n 1 10 end 2020 4 7 机械工业出版社 Page58 2 高效使用内存的策略 例3 26 内存使用示例 尽早为大矩阵变量预置内存 程序段一 a rand 1e6 1 b rand 1e6 1 clearc rand 2 1e6 1 程序段二 c rand 2 1e6 1 cleara rand 1e6 1 b rand 1e6 1 2020 4 7 机械工业出版社 Page59 2 高效使用内存的策略 例3 26 内存使用示例 比较两个1000 1000的矩阵X和Y 其中X为单位矩阵 Y为X的稀疏形式 X eye 1000 1000 Y sparse X whos内存占用空间如下 NameSizeBytesClassAttributesX1000 x10008000000doubleY1000 x100016004doublesparse可以看出 采用稀疏矩阵的存储形式可以有效减少内存空间 2020 4 7 机械工业出版社 Page60 3 6MATLAB面向对象程序设计 3 6 1面向对象基础3 6 2MATLAB类的定义3 6 3MATLAB对象的使用3 6 4面向对象程序实例 2020 4 7 机械工业出版社 Page61 1 面向对象基础 对象类封装继承多态性 2020 4 7 机械工业出版社 Page62 2 MATLAB类的定义 两个步骤 建立类目录类的定义 2020 4 7 机械工业出版社 Page63 2 MATLAB类的定义 两个步骤 建立类目录类的定义 2020 4 7 机械工业出版社 Page64 建立类目录 路径文件夹 文件夹 2 MATLAB类的定义 2020 4 7 机械工业出版社 Page65 类的定义 类定义关键词classdef语法形式如下 classdefClassName end当该类为一个继承类时 需要在定义类时指定它的父类 其语法形式如下 classdefclassname superclassname有多个父类的情况 classdefclassname super1 super2 2 MATLAB类的定义 2020 4 7 机械工业出版社 Page66 类的定义 类属性
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年教育培训师专业知识考核试题及答案解析
- 2025年建筑设计师资格考试试题及答案解析
- 2025年化妆师技能考核试题及答案解析
- 2025年会展设计面试模拟题及答案
- 2025年教育师中级面试模拟考试题
- 初中双谱教学课件
- 2025年老年活动中心面试技巧及答案集
- 2025年农机长助理笔试冲刺模拟题
- 2025年燃气储运初级面试bi备知识题
- 希沃白板课件教学
- 2025版《中国系统性红斑狼疮诊疗指南》解读 4
- 徒步小组管理办法
- 2025年浙江省初中学业水平考试科学试卷真题(精校打印)
- 市政施工安全培训课件
- 《慢性萎缩性胃炎中西医结合诊疗专家共识(2025)》解读 3
- 医院保洁员考核管理办法
- 初中九年级(人教版)语文(上下册)课本全部(40篇)诗词文言文集合
- 医院关于开展整治重复医疗检查检验、违规收费问题工作实施方案的通知
- 中医高热护理常规
- 船舶用钢市场发展分析及行业投资战略研究报告2025-2028版
- 超市服务礼仪培训课件
评论
0/150
提交评论