论文网
首页 理科毕业电气毕业正文

Matlab程序单步调试方法及样例分析

  • 投稿Adam
  • 更新时间2015-09-11
  • 阅读量1113次
  • 评分4
  • 98
  • 0

王若楠,田野,马玉峰,刘立士

(沈阳理工大学信息科学与工程学院,辽宁沈阳110159)

摘要: 针对单步调试法在程序调试中的重要作用,引用了一个具体的样例,进行Matlab程序单步调试法的分析并逐步检验,根据运行结果与实际计算结果的比较,验证了该方法在程序调试中的重要地位,并且该实验结果还可以应用于复杂的算法验证中,具有很大的实用意义。

教育期刊网 http://www.jyqkw.com
关键词 :程序调试;系统质量;运行结果;计算结果;单步调试法

中图分类号:TN92?34 文献标识码:A 文章编号:1004?373X(2015)15?0139?03

收稿日期:2015?01?31

基金项目:本项目获辽宁“百千万人才工程”培养经费资助(2014921044)

0 引言

Matlab(Matrix Laboratory)作为一种高效的科学及工程计算语言,广泛地应用于数学分析、自动控制、系统仿真、人工智能等领域[1?5]。

在Matlab应用中,程序调试是保证系统质量的关键步骤[6?7],其主要目的是发现程序中的错误并及时纠正。目前主要有直接调试和单步调试两种方法。直接调试法主要应用于简单的Matlab程序,如程序设计中的流程控制问题;当M文件很大或者M文件中含有复杂的嵌套时,则需要单步调试法对程序进行调试,文献[8]采用单步调试法验证信号处理指标和实时性是否满足要求,文献[9]针对现场故障,采用继电保护应用软件仿真验证系统,进行单步跟踪调试,准确判断装置保护程序逻辑正确性。

上述研究只是应用了单步调试方法,并没有提到具体的调试步骤。因此,本文针对具体的样例,进行了Matlab环境下程序的单步调试,该样例可为复杂的Matlab程序设计提供依据和参考。

1 单步调试法

程序调试中常见的错误有以下三种:拼写错误、语法错误与逻辑错误[1],Matlab会在程序运行出错的时候提示是哪一行出现问题,但却不能确定导致出错的是哪一行,或者在运行过程中没有报错,但是得出的结果却是不符合逻辑的。在这些情况下就需要单步调试解决问题。单步调式法具体可以由以下几个步骤完成:

(1)设置断点;

(2)程序运行到断点时步进;

(3) 在断点处查看所调试的变量是否与逻辑值相符;

(4)Step in,进入子程序,查看运行情况;

(5)在子程序中步进或者直接跳出进入主程序。

2 样例分析

将式(1)代入样例公式得:

其中:

仿真参数z 设置为1,以x = 1 为例,使用单步调试法测试程序的正确性。图1为该公式的主程序示意图。

程序中的s1(1,x) 和s2 (1,x) 分别对应公式中的y1 和y2 。首先设置断点,如图2所示。

运行完这一步后,跳出子程序,回到主程序,此时程序的各参数运行结果如图4所示。

此时,将z = 1,x = 1 与n = 0 代入式(3),得出此时y1的累加结果为y1 = 0 ,此结果与上述程序运行结果相符,继续测试当n = 1 时的结果。点击继续程序的运行,当第二次运行完时,各参数运行结果如图5所示。

此时,将z = 1, x = 1 与n = 1 代入式(3),得出此时y1的累加结果如图6所示。

此时,将z = 1, x = 1 与n = 2 代入式(3),得出此时y1的累加结果如图8所示。

此结果与上述程序运行结果相符,可以表明该主程序的第一部分是正确的。

继续设置断点,如图9所示。

单步运行程序,当运行完一次后,各参数运行结果如图10所示。

将z = 1, x = 1 与n = 11 代入式(4),得出此时y2 的累加结果如图11所示。

将z = 1,x = 1 与n = 12 代入式(4),此时y2 的累加结果如图13所示。

此结果与上述程序运行结果相符,可以表明该主程序的第二部分是正确的。

综合上述的分析,该程序的第一部分及第二部分对于每次累加后y1 和y2 的结果都是正确的,所以,其编写是正确的。因此,该样例成功运用单步调试法完成了本程序的测试,为后续大数量数据的运行提供了基础。

3 结论

通过以上实例的分析,验证了单步调试法在程序测试中的重要作用。通过此方法,程序员可以通过Matlab搭建系统模型,利用Matlab软件本身的计算优势,在程序编译过程中快速找到错误所在,提高编写程序的效率,还可以应用于复杂的算法测控中,具有很强的实用价值。

注:本文通讯作者为田野。

教育期刊网 http://www.jyqkw.com
参考文献

[1] 许波,刘征.Matlab 工程数学应用[M].北京:清华大学出版社,2000.

[2] 王向东,戎海武,文翰.数学实验[M].北京:高等教育出版社,2004.

[3] 薛定宇,陈阳泉.高等应用数学问题的Matlab 求解[M].北京:清华大学出版社,2004.

[4] 黄忠霖.控制系统Matlab计算机仿真[M].北京:国防工业出版社,2004.

[5] 姜启源,邢文训,谢金星,等.大学数学实验[M].北京:清华大学出版社,2005.

[6] 李建新,刘乃安,刘继.现代通信系统分析与仿真[M].西安:西安电子科技大学出版社,2001.

[7] 刘志俭.Matlab应用接口用户指南[M].北京:科学出版社,2000.

[8] 刘春.伪码调相中断连续波雷达信号处理系统的设计与实现[D].南京:南京理工大学,2010.

[9] 朱宁,吴崇昊,李志坚,等.一种继电保护应用软件仿真验证系统的设计[J].电力自动化设备,2012,32(6):140?144.

[10] 毛用才,胡奇英.随机过程[M].西安:西安电子科技大学出版社,2006.

作者简介:王若楠(1989—),女,山东德州人,研究生。主要研究方向为高速移动无线信号处理。

田野(1977—),男,辽宁沈阳人,博士,教授。主要研究方向为卫星通信技术与信号处理、无线通信技术与信号处理。

马玉峰(1980—),女,山东莱芜人,硕士,讲师。主要研究方向为卫星通信技术、无线通信技术。