当有如此多的m文件进行如此多的计算时,跟踪这个和那个出错的原因真的是一个大任务.
通常情况下,代码中的某处除以0,或者为某些变量保存了Inf的值.
我想让这个很容易检查.一种方法是写
if a == Inf
display('a is infinite')
keyboard
end
Run Code Online (Sandbox Code Playgroud)
如果我每次为每个变量添加这样的东西,它会起作用,但它会很混乱.
如果某个变量在运行过程中为Inf,我可以让MatLab停止或暂停或弹出警告消息吗?
Matlab有一个很好的调试套件,适用于许多即时条件.特别是命令1
dbstop if naninf
Run Code Online (Sandbox Code Playgroud)
在找到条件NaN或Inf条件后暂停执行.文档给出了一个例子.使用此功能的唯一潜在缺点是,如果任何变量被初始化为NaN或者Inf某些代码会执行暂停(由于我的困惑).
dbstop确实有一个更精确和可靠的暂停执行系统,但我认为naninf选项与良好的测试相结合是一个开始进行一般开发的好地方.
1通过转到断点>更多错误和警告处理选项> NaN或Inf并选择正确的单选按钮,可以从GUI调用相同的行为.