欢迎来到天天文库
浏览记录
ID:42276563
大小:289.01 KB
页数:14页
时间:2019-09-11
《程序调试和编程技巧》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第12章程序调试和编程技巧在编写MATLAB程序时,难免会出现错误,这时就需要对程序进行调试。MATLAB中,M文件的调试主要有两种方法:直接调试法和工具调试法。编写的程序在能够完成特定的功能的情况下,还要对程序的性能进行分析,例如运算速度和效率等。在MATLAB中,采用Profile工具对程序的性能进行分析。在本章的最后,介绍了一些常用的编程技巧。12.1M文件调试对于编程者来说,程序出现错误在所难免,尤其是在编写多人参与的大型程序时,掌握常用的程序调试方法非常重要。下面首先介绍出错信息,然后介绍常用的直接调试法和工具调试法等。12.1.1出错信息程序调试是一个很基
2、础也很重要的问题。没有人能一遍写出完全正确没有错误的程序。错误的程序大致分为以下三类:拼写错误:比如应该是sum(),写成了smu()。拼写错误非常容易发现,在程序运行时,系统会提示错误。语法错误:比如6/0,输出结果变为无穷大Inf。程序在运行时不一定会报错,但是输出结果不正常。逻辑错误:这样的错误非常隐蔽,通常是对程序的算法考虑不周全。程序可以正常执行,但是输出结果不符合预期值。12.1.2直接调试法利用MATLAB编写脚本文件或函数,非常灵活,得到的程序也非常的简洁,比较容易阅读和理解。对于不是很复杂的程序,可以使用直接调试法进行程序的调试。(1)如果程序出错或
3、给出警告信息,仔细分析出错或警告信息,会得到出错的原因。(2)在程序中,利用函数disp()将函数M文件的中间结果显示出来。(3)在单独调试一个函数M文件时,可以将该函数M文件修改为脚本M文件进行调试。(4)将程序的某些行通过注释进行屏蔽,在程序行的前面输入注释符%。(5)在程序中需要调试的地方添加keyboard函数。12.1.3工具调试法在MATLAB中,有强大的程序调试工具,可以在命令行窗口采用调试命令进行调试,也可以采用Debugger工具在图形窗口中进行程序的调试。下面分别进行介绍。1.命令行为主的调试在命令行窗口中输入:helpdebug可以查看调试命令。
4、dbstop设置断点。dbclear清除断点。dbcont从断点处恢复执行。dbstack调用堆栈。dbstatus列出所有断点。dbstep执行一行或多行程序。dbtype查看程序的代码。2.图形化程序调试12.1.4错误处理在程序运行过程中,如果遇到警告或错误,需要进行处理。在MATLAB中,可以采用try…catch语句来捕获错误。可以利用函数error()发出错误信息,利用函数warning()发出警告信息。1.使用try…catch语句2.使用函数error()3.使用函数warning()12.2M文件性能分析在MATLAB中,通过程序的调试,可以改正程序
5、中的语法错误和逻辑错误等。程序调试结束以后,用户编写的MATLAB程序可以正常运行了,但可能并不是最优的,运行效率也不是最好的。这就需要对MATLAB程序的性能进行分析,并进行优化。MATLAB提供的M文件分析工具包括:CodeAnalyzer工具和Profiler工具,它们都有图形操作界面,使用起来非常的方便,下面进行详细的介绍。12.2.1CodeAnalyzer工具在MATLAB中,可以利用CodeAnalyzer工具来分析程序中的错误和性能等。在以前的MATLAB版本中叫M-lint,基本功能类似,只是名称不一样。用户首先采用M文件编辑器打开要分析的M文件,然
6、后选择M文件编辑器中Tool菜单下的CodeAnalyzer选项,如图12.8所示。其中菜单MATLABCompilerMessageDefaultSetting将CodeAnalyzer工具设置为默认值,单击菜单ShowCodeAnalyzerReport,会在浏览器窗口中显示分析报告。12.2.2Profiler分析工具在MATLAB中,采用Profiler工具对MATLAB代码进行分析。用户可以在MATLAB的主界面中单击菜单Desktop
7、Profiler,显示Profiler工具。在Runthiscode后面输入程序文件名或程序语句后,通过单击按钮Start
8、Profiling进行程序的性能分析。12.3编程技巧由于MATLAB语言是一种解释性语言,有时MATLAB程序的执行速度不是很理想。下面给出了一些编程的技巧,例如:尽量采用向量运算来代替循环,对于大型的矩阵预先给出维数等。12.3.1程序执行时间在MATLAB中,可以对程序进行计时,从而获得程序的执行时间。在本书第2章的2.3.4节,给出了3种计时方法,分别是1)采用函数tic和toc进行计时;2)利用函数etime进行计时;3)利用cputime进行计时。如果程序不小心进入死循环,或者计算时间太长,用户可以在命令窗口中使用Ctrl+c来中断当前程
此文档下载收益归作者所有