版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第第1212章章 程序调试和编程技巧程序调试和编程技巧在编写在编写MATLAB程序时,难免会出现错误,这时就需要对程程序时,难免会出现错误,这时就需要对程序进行调试。序进行调试。MATLAB中,中,M文件的调试主要有两种方文件的调试主要有两种方法:直接调试法和工具调试法。法:直接调试法和工具调试法。编写的程序在能够完成特定的功能的情况下,还要对程序的编写的程序在能够完成特定的功能的情况下,还要对程序的性能进行分析,例如运算速度和效率等。在性能进行分析,例如运算速度和效率等。在MATLAB中中,采用,采用Profile工具对程序的性能进行分析。在本章的最工具对程序的性能进行分析。在本章的最后,介
2、绍了一些常用的编程技巧。后,介绍了一些常用的编程技巧。12.1 M12.1 M文件调试文件调试对于编程者来说,程序出现错误在所难免,尤其是在编写多对于编程者来说,程序出现错误在所难免,尤其是在编写多人参与的大型程序时,掌握常用的程序调试方法非常重人参与的大型程序时,掌握常用的程序调试方法非常重要。下面首先介绍出错信息,然后介绍常用的直接调试要。下面首先介绍出错信息,然后介绍常用的直接调试法和工具调试法等。法和工具调试法等。12.1.1 12.1.1 出错信息出错信息程序调试是一个很基础也很重要的问题。没有人能一遍写出程序调试是一个很基础也很重要的问题。没有人能一遍写出完全正确没有错误的程序。错
3、误的程序大致分为以下三完全正确没有错误的程序。错误的程序大致分为以下三类:类:拼写错误:比如应该是拼写错误:比如应该是sum( ),写成了,写成了smu( )。拼写错误非。拼写错误非常容易发现,在程序运行时,系统会提示错误。常容易发现,在程序运行时,系统会提示错误。语法错误:比如语法错误:比如6/0,输出结果变为无穷大,输出结果变为无穷大Inf。程序在运行。程序在运行时不一定会报错,但是输出结果不正常。时不一定会报错,但是输出结果不正常。逻辑错误:这样的错误非常隐蔽,通常是对程序的算法考虑逻辑错误:这样的错误非常隐蔽,通常是对程序的算法考虑不周全。程序可以正常执行,但是输出结果不符合预期不周全
4、。程序可以正常执行,但是输出结果不符合预期值。值。12.1.2 12.1.2 直接调试法直接调试法利用利用MATLAB编写脚本文件或函数,非常灵活,得到的程序编写脚本文件或函数,非常灵活,得到的程序也非常的简洁,比较容易阅读和理解。对于不是很复杂也非常的简洁,比较容易阅读和理解。对于不是很复杂的程序,可以使用直接调试法进行程序的调试。的程序,可以使用直接调试法进行程序的调试。(1)如果程序出错或给出警告信息,仔细分析出错或警告)如果程序出错或给出警告信息,仔细分析出错或警告信息,会得到出错的原因。信息,会得到出错的原因。 (2)在程序中,利用函数)在程序中,利用函数disp( )将函数将函数M
5、文件的中间结果文件的中间结果显示出来。显示出来。 (3)在单独调试一个函数)在单独调试一个函数M文件时,可以将该函数文件时,可以将该函数M文件文件修改为脚本修改为脚本M文件进行调试。文件进行调试。 (4)将程序的某些行通过注释进行屏蔽,在程序行的前面)将程序的某些行通过注释进行屏蔽,在程序行的前面输入注释符输入注释符%。 (5)在程序中需要调试的地方添加)在程序中需要调试的地方添加keyboard函数。函数。 12.1.3 12.1.3 工具调试法工具调试法在在MATLAB中,有强大的程序调试工具,可以在命令行窗口中,有强大的程序调试工具,可以在命令行窗口采用调试命令进行调试,也可以采用采用调
6、试命令进行调试,也可以采用Debugger工具在图工具在图形窗口中进行程序的调试。下面分别进行介绍。形窗口中进行程序的调试。下面分别进行介绍。1命令行为主的调试命令行为主的调试在命令行在命令行 窗口中输入:窗口中输入:help debug可以查看调试命令。可以查看调试命令。dbstop设置断点。设置断点。dbclear清除断点。清除断点。dbcont从断点处恢从断点处恢复执行。复执行。dbstack调用堆栈。调用堆栈。dbstatus列出所有断点。列出所有断点。dbstep执行一行或多行程序。执行一行或多行程序。dbtype查看程序的代码。查看程序的代码。2图形化程序调试图形化程序调试12.1
7、.4 12.1.4 错误处理错误处理在程序运行过程中,如果遇到警告或错误,需要进行处理。在程序运行过程中,如果遇到警告或错误,需要进行处理。在在MATLAB中,可以采用中,可以采用trycatch语句来捕获错误。语句来捕获错误。可以利用函数可以利用函数error( )发出错误信息,利用函数发出错误信息,利用函数warning( )发出警告信息。发出警告信息。1使用使用trycatch语句语句2使用函数使用函数error( )3使用函数使用函数warning( )12.2 M12.2 M文件性能分析文件性能分析在在MATLAB中,通过程序的调试,可以改正程序中的语法错中,通过程序的调试,可以改正
8、程序中的语法错误和逻辑错误等。程序调试结束以后,用户编写的误和逻辑错误等。程序调试结束以后,用户编写的MATLAB程序可以正常运行了,但可能并不是最优的,程序可以正常运行了,但可能并不是最优的,运行效率也不是最好的。这就需要对运行效率也不是最好的。这就需要对MATLAB程序的性程序的性能进行分析,并进行优化。能进行分析,并进行优化。MATLAB提供的提供的M文件分析工具包括:文件分析工具包括:Code Analyzer工具工具和和Profiler工具,它们都有图形操作界面,使用起来非常工具,它们都有图形操作界面,使用起来非常的方便,下面进行详细的介绍。的方便,下面进行详细的介绍。12.2.1
9、Code Analyzer12.2.1 Code Analyzer工具工具在在MATLAB中,可以利用中,可以利用Code Analyzer工具来分析程序中工具来分析程序中的错误和性能等。在以前的的错误和性能等。在以前的MATLAB版本中叫版本中叫M-lint,基,基本功能类似,只是名称不一样。本功能类似,只是名称不一样。用户首先采用用户首先采用M文件编辑器打开要分析的文件编辑器打开要分析的M文件,然后选择文件,然后选择M文件编辑器中文件编辑器中Tool菜单下的菜单下的Code Analyzer选项,如图选项,如图12.8所示。其中菜单所示。其中菜单MATLAB Compiler Messag
10、e Default Setting将将Code Analyzer工具设置为默认值,单工具设置为默认值,单击菜单击菜单Show Code Analyzer Report,会在浏览器窗口,会在浏览器窗口中显示分析报告。中显示分析报告。12.2.2 Profiler12.2.2 Profiler分析工具分析工具在在MATLAB中,采用中,采用Profiler工具对工具对MATLAB代码进行分析代码进行分析。用户可以在。用户可以在MATLAB的主界面中单击菜单的主界面中单击菜单Desktop| Profiler,显示,显示Profiler工具。在工具。在Run this code后面输入后面输入程序文
11、件名或程序语句后,通过单击按钮程序文件名或程序语句后,通过单击按钮Start Profiling进行程序的性能分析。进行程序的性能分析。12.3 12.3 编程技巧编程技巧由于由于 MATLAB 语言是一种解释性语言,有时语言是一种解释性语言,有时 MATLAB 程程序的执行速度不是很理想。下面给出了一些编程的技巧序的执行速度不是很理想。下面给出了一些编程的技巧,例如:尽量采用向量运算来代替循环,对于大型的矩,例如:尽量采用向量运算来代替循环,对于大型的矩阵预先给出维数等。阵预先给出维数等。12.3.1 12.3.1 程序执行时间程序执行时间在在MATLAB中,可以对程序进行计时,从而获得程序
12、的执行中,可以对程序进行计时,从而获得程序的执行时间。在本书第时间。在本书第2章的章的2.3.4节,给出了节,给出了3种计时方法,分种计时方法,分别是别是1)采用函数)采用函数tic和和toc进行计时;进行计时;2)利用函数)利用函数etime进行计时;进行计时;3)利用)利用cputime进行计时。进行计时。如果程序不小心进入死循环,或者计算时间太长,用户可以如果程序不小心进入死循环,或者计算时间太长,用户可以在命令窗口中使用在命令窗口中使用Ctrl+c来中断当前程序的执行。来中断当前程序的执行。12.3.2 12.3.2 编程技巧编程技巧(1)在利用)在利用MATLAB编程时,应尽量避免使
13、用循环。编程时,应尽量避免使用循环。(2)如果必须使用多重循环,但是两个循环执行的次数不)如果必须使用多重循环,但是两个循环执行的次数不同,则建议在外循环执行循环次数少的,内循环执行循同,则建议在外循环执行循环次数少的,内循环执行循环次数多的。这样也可以显著提高速度。环次数多的。这样也可以显著提高速度。(3)对于大型矩阵,如果预先定维,会减少程序的执行时)对于大型矩阵,如果预先定维,会减少程序的执行时间,提高程序的运算效率。间,提高程序的运算效率。在程序中,给大型矩阵动态的确定维数,花费的时间非常多在程序中,给大型矩阵动态的确定维数,花费的时间非常多。建议在定义大矩阵时,首先用。建议在定义大矩
14、阵时,首先用 MATLAB 的内在函数,的内在函数,如函数如函数zeros( )或或ones( )对之先进行定维,然后再进行赋对之先进行定维,然后再进行赋值处理,这样会显著减少所需的时间的。值处理,这样会显著减少所需的时间的。(4)在编写程序时,优先考虑)在编写程序时,优先考虑MATLAB的内在函数。的内在函数。(5)如果用户想继续提高程序的效率,可以考虑采用更加)如果用户想继续提高程序的效率,可以考虑采用更加有效的算法。有效的算法。(6)此外,还可以尝试采用)此外,还可以尝试采用Mex 技术。技术。12.3.4 12.3.4 小技巧小技巧下面给出在利用下面给出在利用MATLAB编程时,可能会
15、用到的一些小技巧编程时,可能会用到的一些小技巧。在有些时候这些小技巧,也能起到事半功倍的效果。在有些时候这些小技巧,也能起到事半功倍的效果。(1)对于)对于M文件的命名,尽量不要用简单的英文单词,最好文件的命名,尽量不要用简单的英文单词,最好是由大小写英文字母、数字和下划线等组成。是由大小写英文字母、数字和下划线等组成。(2)在调试程序时,经常要屏蔽掉多行程序,可以在选定)在调试程序时,经常要屏蔽掉多行程序,可以在选定程序后,按快捷键程序后,按快捷键Ctrl+r将这些程序行注释掉。将这些程序行注释掉。(3)快捷键)快捷键Ctrl+c可以中断正在执行的操作。可以中断正在执行的操作。(4)使用)使用Tab键补全函数名或文件名。键补全函数名或文件名。(5)在命令行窗口中,使用上下光标键)在命令行窗口中,使用上下光标键和和,将历史记录,将历史记录中的命令复制到输入位置。中的命令复制到输入位置。(6)使用文本编辑器的)使用文本编辑器的cell模式,能使程序更加清晰。模式,能使程序更加清晰。 12.4 12.4 本章小结本章小结本章给出了在本章给出了在MATLAB编程时,程序调试的方法,包括命令编程时,程序调试的方法,包括命令行下的直接调试法和工具调试法。
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年考核锅炉安全总监试题及答案
- 2025年止血敏试题及答案
- 2025年产业组织理论试题及答案
- 臀部扁平整形的护理个案
- DB52∕T 1786-2024 畜禽种质资源基因库建设技术规范
- DB62∕T 1501-2023 柽柳育苗造林技术规程
- DB15∕T 3877-2025 大型活动碳中和实施指南
- DB21∕T 4008-2024 UHF频段无线电台(站)电磁环境测试要求
- DB1304∕T 463-2024 商品源数据采集工作规范
- 医学影像诊断高级考试题及答案
- 2025年南陵县县属国有企业公开招聘工作人员55人笔试考试参考试题及答案解析
- 2025年医疗机构输血科(血库)基本标准(试行)
- 肠代食管吻合口狭窄的护理个案
- 普通高中化学课程标准(2025年版)
- 陕西省2025年中考物理真题(AB合卷)附答案
- 兄弟BAS-311G电脑花样机说明书
- 医疗器械临床试验质量管理规范试题及答案(2025年)
- 基础护理第七版试题题库及答案解析
- 科学认识天气知到智慧树期末考试答案题库2025年中国海洋大学
- 国开(甘肃)2024年春《地域文化(专)》形考任务1-4终考答案
- 镜面人胸腔镜肺癌根治术PPT
评论
0/150
提交评论