相见恨晚的Matlab编程小技巧(1) | 您所在的位置:网站首页 › matlab运行不出来怎么找错误 › 相见恨晚的Matlab编程小技巧(1) |
相信在matlab调试程序的时候都遇到过这种情况:运行程序时命令行报错,而且出错的位置在我们自己定义的函数里,比如下面这个例子: 主函数main.m: a=[1 2 3]; b=[4 5]; c=sum_squares(a,b);子函数sum_squares.m function c=sum_squares(a,b) c=a.^2+b.^2; end我们运行主函数,显然会因为维度不匹配报错: 我举得例子非常简单,一眼就可以看出来问题在哪。但是如果变量很多,计算公式很复杂,我们也不知道具体是哪些变量维度不匹配,这时候一般的做法就是在子函数报错的对应行设置断点,重新运行主函数,再来找出具体问题。 如果程序运行时间比较长,一来二去这样就要消耗大量的时间。有没有啥简单的办法呢?当然是有的,在程序运行前加上dbstop if error,这样matlab就会在发生错误的位置暂停,直接可以省去第二次调试的步骤了。 dbstop if error a=[1 2 3]; b=[4 5]; c=sum_squares(a,b);把主函数改成这样,然后运行,直接就会在报错的代码行暂停,调试起来就很方便了: dbstop函数还有其他的用法,具体可以查看官方文档: dbstop设置断点用于调试 语法dbstop in file dbstop in file at location dbstop in file if expression dbstop in file at location if expression dbstop if condition dbstop(b) 说明dbstop in file 在 file 中的第一个可执行代码行位置设置断点。当您运行 file 时,MATLAB® 进入调试模式,在断点处暂停执行并显示暂停位置对应的行。 dbstop in file at location 在指定位置设置断点。MATLAB 执行会在到达该位置之前立即暂停,除非该位置处是一个匿名函数。如果该位置处是匿名函数,则执行将在断点之后立即暂停。 dbstop in file if expression 在文件的第一个可执行代码行位置设置条件断点。仅在 expression 的计算结果为 true (1) 时暂停执行。 dbstop in file at location if expression 在指定位置设置条件断点。仅在 expression 计算结果为 true 时,于该位置处或该位置前暂停执行。 dbstop if condition 在满足指定的 condition(如 error 或 naninf)的行位置处暂停执行。与其他断点不同,您不在特定文件中的特定行设置此断点。MATLAB 会在发生指定的 condition 时在任何文件的任何行暂停执行。 dbstop(b) 用于恢复您之前保存到 b 的断点。包含保存的断点的文件必须位于搜索路径中或当前文件夹中。MATLAB 按行号分配断点;因此,文件中的行数必须与保存断点时的行数相同。 dbstop官方使用文档 |
今日新闻 |
推荐新闻 |
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 |