




免费预览已结束,剩余18页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
M文件及程序调试 本章详细讲解利用M语言进行编程的方法讲述的主要内容 主程序文件函数文件M文件的调试 1 指令驱动模式即在MATLABM命令行窗口下用户输入单行指令时 MATLAB立即处理这条指令 并显示结果 这就是MATLAB命令行方式 缺点 命令行方式程序可读性差 而且不能存储 当处理复杂问题和大量数据时很不方便 2 M文件模式将MATLAB语句构成的程序存储成以m为扩展名的文件 然后再执行该程序文件 这种工作模式称为程序文件模式 MATLAB的工作模式 M语言文件可以分为主程序文件和函数文件一个M语言文件就是由若干MATLAB的命令组合在一起构成的 M语言文件是标准的纯文本格式的文件 其文件扩展名为 m MATLAB提供了meditor编辑器编辑M文件注意 1 不可用汉字命名 若用汉字命名虽然可以打开M文件 但是编译运行时会出错 2 文件名不可与MATLAB内置函数重名 3 文件名不可以以数字命名 主程序文件 脚本文件 相当于C语言的主函数主程序文件没有输入参数和输出参数 执行主程序文件时 文件中的指令或者命令按照出现在脚本文件中的顺序依次执行 主程序文件主要由注释行和代码行组成 M文件的注释行需要使用 定义符注释定义符仅能影响一行代码程序执行的结果将显示于命令窗中 函数文件 相当于C语言的子函数 函数文件供主程序文件调用 必须指定函数名和输入输出参数 并由主程序文件中语句序列给出一系列操作 从而生成所需数据函数文件格式一般包括以下部分 1 函数定义行 表明该m文件包含一个函数 且为其定义函数名 输入参数和输出参数functiony mean x 2 帮助信息 处在文件中的第二行 应该反映该m文件概括性信息 求平均值 functiony mean x 求平均值 3 函数体 函数所用计算过程和输入输出参数赋值的MATLAB代码 这里可以为调用函数 流程控制 交互式输入输出 计算 赋值等 m n size x ifm 1y sum x n elsey sum x m 把每一列做平均值运算end 函数文件例1 求均值 主程序文件调用y mean x 的方法 clear A 1 2 3 4 B mean A helpmean则在命令窗显示mean函数注释的帮助信息 函数文件例2 比较两个数大小 functionnummax a b if abfprintf thelargenumberis f a elseifa bfprintf thelargenumberis f b elsefprintf f f a b end function avg stdev r ourstats x ourstats多输入输出参数示例 该函数计算处理矩阵 得到相应的均值 标准差和矩阵的秩 m n size x ifm 1m n end Averageavg sum x m Sandaddeviationstdev sqrt sum x 2 m avg 2 Rankr rank x 函数文件例3 多个输入参数 运行例4 15 A 123 456 A 123456 a s r ourstats A a 2 50003 50004 5000s 1 50001 50001 5000r 2 a s ourstats A a 2 50003 50004 5000s 1 50001 50001 5000 输入输出参数 续 a ourstats A 0 1 a 2 50003 50004 5000 调用该函数时 将输出参数依次写在一个向量中 若输出参数的个数与函数定义的输出参数个数不一致时 将计算得到的前几个输出参数作为返回值 若输出参数的个数等于指定的输出参数个数时 计算结果依次赋值给不同的变量 子函数应用例1function avg med newstats u 主函数 NEWSTATS计算均值和中间值n length u avg mean u n 调用子函数med median u n 调用子函数functiona mean v n 子函数 计算平均值a sum v n functionm median v n 子函数 计算中间值w sort v 从小到大排序ifrem n 2 1m w n 1 2 elsem w n 2 w n 2 1 2 end 在函数文件中可以包含多个函数 其中第一个函数称为主函数 其函数名与文件名相同 在M函数文件中的其他函数称为子函数 它只能由这一函数文件中的主函数或其他子函数引用 子函数 相当于C语言中函数的递归调用 局部变量 在M函数内部声明并使用的变量只在本函数范围内有效仅能在函数调用执行期间被使用 一旦函数结束运行 则变量占用的内存空间自动释放 变量的数值也不存在了局部变量的例子functionlocal LOCAL察看局部变量的例子x rand 2 2 y zeros 2 2 z 函数中的变量 u x y z disp z whos 局部变量和全局变量 运行局部变量的例子 local函数中的变量NameSizeBytesClassu1x3256cellarrayx2x232doublearrayy2x232doublearrayz1x612chararrayGrandtotalis31elementsusing332bytes whos 全局变量 在函数之外定义的变量可以为本文件中其他函数所共用MATLAB将全局变量保存在特殊的工作空间进行统一维护 管理将变量声明为全局变量的方法在使用变量前 用关键字global声明例 声明全局变量XY globalXY whosNameSizeBytesClassXY0 x00doublearray global Grandtotalis0elementsusing0bytes 局部变量和全局变量 使用global关键字创建全局变量时有三种情况 1 若声明为全局的变量在当前空间和全局空间都不存在 则创建一个新的变量 然后为这个变量赋值为空数组 该变量同时存在于局部工作空间和全局工作空间 2 若声明为全局的变量已经存在与全局空间中 则不会在全局工作空间创建新的变量 其数值同时赋值给局部工作空间中的变量 3 若声明为全局的变量存在于局部工作空间中 而全局工作空间不存在 则系统会提示一个警告信息 同时将局部的变量 挪 到全局工作空间中 局部变量和全局变量 全局变量和局部变量实例 函数文件 functiony add3 x globalcd 切记 声明两个或两个以上全局变量时 变量之间用空格隔开 不可用逗号隔开y x 3 c x d y 主程序文件 clear globalcd c 0 d 0 a 5 b add3 a c c 1d d 1 这类变量在MATLAB中被声明为persistent这类变量在函数退出时不被释放 当函数再一次被调用时 变量保留上次退出时的值保留变量的特征 1 变量仅能在声明变量的函数内使用 其他函数不能直接使用保留变量 2 函数执行退出后 MATLAB不清除保留变量占用的内存 3 当函数被清除或者重新编辑后 保留的变量被清除 保留变量 functiony persistent example x PERSISTENT EXAMPLE保留变量使用示例fori 1 xy myfun endfunctiony myfun 子函数 persistent关键字的使用persistentcount count记录函数调用的次数if isempty count count 1 elsecount count 1 endstr sprintf 第 d次调用该函数 count disp str y count 保留变量实例 persistent example 1 第1次调用该函数ans 1 persistent example 3 第2次调用该函数第3次调用该函数第4次调用该函数ans 4 保留变量 在MATLAB命令行中键入指令 clearall则所有的变量都会被清除 persistent example 3 第1次调用该函数第2次调用该函数第3次调用该函数ans 3 M文件调试 M文件的调试可以在文件编辑器中进行M语言的文件编辑器不仅仅是一个文件编辑器 还是一个可视化的调试开发环境可以在命令行中结合具体的命令进行 M文件调试 应用程序的错误语法错误包括词法或者文法的错误运行时的错误指程序运行过程中得到的结果不是用户需要的结果程序的调试是在程序无法得到正确结果时进行程序修正的唯一手段M文件是一种解释型语言 只有在运行过程中才能发现应用程序的错误 M文件调试 M语言文件编辑器提供Breakpoints菜单进行程序调试 M文
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 河北省秦皇岛市抚宁县驻操营学区初级中学初中信息技术《比赛》说课稿
- 2025年秋新人教版三年级上册数学整册同步教案
- 一、春天的约会教学设计-2025-2026学年小学综合实践活动四年级下册鲁科版
- 2025年四级心理学考试试卷【附答案】
- 雅安雨城区2024-2025学年下学期期末考试七年级语文试卷
- 范县初中期中考试卷子(3篇)
- 常心电图及常见心电图的识别及处理
- 茶艺课考试基础简答题及答案
- 线描画展题目大全及答案
- 葡萄肥料专业知识培训总结课件
- 图形动画毕业设计
- 工会劳动竞赛课件
- 2025-2026学年苏教版小学数学五年级上册教学计划及进度表
- 2025年建筑工程-安全员C证-安全员(C证·上海)历年参考题库典型考点含答案解析
- 光伏项目施工组织设计方案
- 2025政府采购评审专家入库题库与答案
- 仪表安全知识培训课件
- 2025年三级老年人能力评估师考试题库(附答案)
- 婴幼儿营养与喂养理论知识考核试题及答案
- 工程设计图纸技术交底
- 2025甘肃行政执法资格考试模拟卷及答案(题型)
评论
0/150
提交评论