第16章MATLAB710程序调试优化和出错处理

上传人:无*** 文档编号:172129921 上传时间:2022-12-01 格式:PPT 页数:13 大小:489.02KB
收藏 版权申诉 举报 下载
第16章MATLAB710程序调试优化和出错处理_第1页
第1页 / 共13页
第16章MATLAB710程序调试优化和出错处理_第2页
第2页 / 共13页
第16章MATLAB710程序调试优化和出错处理_第3页
第3页 / 共13页
资源描述:

《第16章MATLAB710程序调试优化和出错处理》由会员分享,可在线阅读,更多相关《第16章MATLAB710程序调试优化和出错处理(13页珍藏版)》请在装配图网上搜索。

1、技术凝聚实力技术凝聚实力专业创新出版专业创新出版第16章 程序调试、优化和出错处理l程序调试的重要性毋庸置疑,有时调试工作所占用的时间甚至远超过程序设计、代码编写所用时间。MATLAB的程序调试功能强大,较之于VS、BC等更加简洁、方便,具有更好的所见即所得特性,这些内容将在第16.1节作详细介绍。lMATLAB程序是能够完成指定功能的代码集合,完成指定的功能当然是程序的重要目标之一,但往往还不是最重要的目标。在资源(时间、内存及其他相关设备资源)有限的条件下,决定程序质量好坏的标准往往是程序的性能,当然还包括程序界面等。程序的性能指标主要是指完成指定功能所需的时间和内存。第16.2节中给出了

2、一些MATLAB程序优化应该遵循的原则及要注意的事项,这些都可以在某种程度上提高MATLAB程序性能。另外本节还介绍了MATLAB的性能分析工具,利用该工具可以更客观地度量程序的性能。技术凝聚实力技术凝聚实力专业创新出版专业创新出版16.1 调试lMATLAB是一种边解释边执行的程序语言,这为程序的调试提供了众多的便利,尤其要强调的是其良好的所见即所得特性,更是VS、Eclipse等所不能比拟的。除了内置的一系列调试函数之外,MATLAB还提供了专门的MATLAB调试器(即M文件编辑器),通过该调试器、结合调试函数,用户可以完成大部分的调试工作。l本节首先介绍调试的基本任务,接着详细讨论调试函

3、数、MATLAB调试器及其相关的调试技术,最后对MATLAB中的错误和警告及其相关的调试技术进行了简要介绍,它们在第16.3节出错处理中有重要应用。技术凝聚实力技术凝聚实力专业创新出版专业创新出版16.1.1 调试的基本任务l程序调试的概念源于英文术语“Debug”,意为找到、去除程序中的“bug”(bug可以简单地理解为错误)。对大部分程序,可能存在的bug可以大致分为如下三类。语法错误l逻辑错误l异常l语法错误是由于程序员疏忽等原因而造成代码违背程序语言规则,这是初学者经常犯的一类错误。一般地,编译器能够找到大部分的语法错误,MATLAB编译器更是如此,在某种程度上这是由于MATLAB语言

4、较C+、Java等语法相对简单的缘故。l逻辑错误主要是由于程序员对问题求解的程序流程或程序语言本身特性认识有误差而造成程序执行结果(包括中间结果)出现错误。一般来说,编译器对这类错误无能为力,MATLAB编译器也不例外。逻辑错误也是大部分程序调试的主要工作。技术凝聚实力技术凝聚实力专业创新出版专业创新出版16.1.2 调试函数lMATLAB内置了一系列的调试函数,用于程序执行过程相关的显示、执行中断、断点设置、单步执行操作等。通过在MATLAB命令窗口输入以下指令:l help debugl用户可以查询到这些调试函数,它们均以db开头,Debug函数及其说明函 数 名功 能dbstop设置断点

5、dbclear清除断点dbcont重新执行dbdown变更本地工作空间上下文dbmex使MEX文件调试有效dbstack列出函数调用关系dbstatus列出所有断点dbstep单步或多步执行dbtype列印M文件(包括行号)dbup变更本地工作空间上下文dbquit退出调试模式技术凝聚实力技术凝聚实力专业创新出版专业创新出版16.1.3 MATLAB调试器l但前面利用MATLAB调试函数对MATLAB程序进行调试还有一些不足之处:l不够简便,需要输入过多的调试代码;不够直观;对具有多重函数调用的大型程序不使适用。l用户也许希望拥有像VS类似的、具有图形用户界面的调试器,为此MATLAB提供了专

6、门的MATLAB程序调试器,该调试器很好集成在M文件编辑器之中,具有良好的所见即所得特性,操作控制简单方便,功能强大,下面将为用户详细介绍其特性及使用方法。MATLAB调试器集成在文件编辑器的调试工具栏,包括7个调试按钮和一个空间堆栈下拉框,技术凝聚实力技术凝聚实力专业创新出版专业创新出版16.1.4 警告和错误lMATLAB程序在执行过程中若遇到语法错误或异常,则会抛出错误或警告。错误和警告信息中包含了错误和警告发生的代码行行号,由此可以迅速地找到MATLAB程序中的语法错误或异常,下面通过一个简单的例子说明警告、错误相关的除错技术。技术凝聚实力技术凝聚实力专业创新出版专业创新出版16.2

7、性能优化l广义上来说,程序性能的范畴不仅包括程序的时间效率(即执行效率)和空间效率(主要指内存使用效率),还涉及程序的稳定性、可靠性、适应性等多种指标。但本节仅讨论狭义的程序性能,即程序的执行效率和内存使用效率,及相关的性能优化技术。l从理论上分析程序的性能不是本节所要讨论的内容,这里首先介绍MATLAB的程序性能分析工具Profiler,用以衡量程序的性能,并在后续的内容中验证相关性能优化技术的效果;随后的两节分别讨论执行效率优化和内存优化相关的技术。技术凝聚实力技术凝聚实力专业创新出版专业创新出版16.2.1 性能分析l查找程序性能瓶颈是提升程序性能的第一步。MATLAB提供的码表(sto

8、pwatch)能够给出指定代码运行的时间,通过比较不同代码的运行时间,用户可以粗略分析程序的性能。下面是码表的一个简单使用示例,通过该例子可以很容易地理解码表的使用方法。技术凝聚实力技术凝聚实力专业创新出版专业创新出版16.2.2 效率优化技术l一般地,用户在初次编写代码时,不需要过多地考虑效率问题,而是将精力更多地放在程序的结构、可读性等方面,大部分的程序优化工作是在程序性能分析之后完成的。本小节主要讨论程序的时间效率优化技术,接下来的小节将讨论内存优化技术,当然两者在某些方面是重叠的。下面列出了一些读者可以借鉴的效率优化建议:l代码向量化,即将for、while循环转为矩阵的按位运算,更详

9、细的内容可以参考第7章7.3.5矩阵按位运算;l预分配足够大的数组,而不是在for、while循环中增加数组的空间大小;l对不可避免且耗时很大的循环操作可以尝试在MEX文件内实现,更详细的内容可以参考第20章;l尽量避免更改变量的数据类型或维数,如有需要,建议事先创建一个新的变量;l尽量避免实数和复数之间的相互赋值;l尽量采用实数运算,对复数运算可以转换为多个实数运算,由此能够提升效率;l合理使用逻辑运算,注意&、|和&、|的差别,一般地,&、|具有更高的效率;l尽量采用函数而不是脚本文件,一般地函数文件的执行效率要高于脚本;l尽量使用Load、Save而不是文件I/O操作函数。技术凝聚实力技

10、术凝聚实力专业创新出版专业创新出版16.2.3 内存优化技术l一般地,用户不需要过于关注MATLAB内部的内存操作,而且MATLAB对此提供的支持也较少,下面几个是比较常用的内存操作函数:lwhos,用于查看当前的内存使用状况;lclear,删除某变量及其内存空间,可以利用指令clear all删除所有的变量;lsave,将某个变量以mat数据文件的形式存储到磁盘中,该操作的目的通常是将暂时不用但占用内存较多的数据暂时清出内存,以备需要时使用;lload,将mat数据载入内存空间。技术凝聚实力技术凝聚实力专业创新出版专业创新出版16.3 出错处理l出错处理经常被程序设计初学者所忽视,然而对一款

11、优秀的软件来说,出错处理所需的工作量往往比正常的程序流程还要多,而且更加具有技巧性和艺术性。出色的出错处理是软件稳定性的保证。l本节首先介绍Try-catch查询语句,该语句用于捕捉程序执行过程中的错误和异常;第16.3.2节介绍MATLAB中一些常用出错处理手段。这里读者需要认识到一个事实,即MATLAB本身支持的出错处理手段是有限的(这主要是基于MATLAB语言的局限性),MATLAB内置的出错处理主要体现在报错。要设计具有良好错误处理能力的MATLAB程序,需要发挥用户的创造性。技术凝聚实力技术凝聚实力专业创新出版专业创新出版16.3.1 Try-catch错误查询l如果用户预料到某段代

12、码可能引发异常,那么可以将该代码段嵌入到try-catch语句中以捕获该异常并采取适当的补救措施。try-catch语句的基本语法如下。ltrylstatement1(可能引发异常的代码段)lcatchlstatement2(出错处理代码)lend技术凝聚实力技术凝聚实力专业创新出版专业创新出版16.3.2 错误处理l出错处理应尽量将程序从错误中恢复出来,完成程序正常的功能;即便不能如此,程序也应当给用户相应的提示,以便于用户采取进一步措施,如手动除错等。l错误恢复特定于不同的错误、不同的恢复任务,没有统一的规则可循;错误报告对大部分的程序是相似的。下面首先介绍错误报告的相关技术,接着以一个简单的例子介绍错误恢复。lMATLAB系统捕获到程序执行错误时,其默认的处理方法是报告错误,并停止程序执行流程,例如,在MATLAB命令窗口输入以下代码。l x=2;y=2x;

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!