每当除以0或发生Inf值时停止或暂停运行MatLab

use*_*459 3 matlab

当有如此多的m文件进行如此多的计算时,跟踪这个和那个出错的原因真的是一个大任务.

通常情况下,代码中的某处除以0,或者为某些变量保存了Inf的值.

我想让这个很容易检查.一种方法是写

if a == Inf
   display('a is infinite')
   keyboard
end
Run Code Online (Sandbox Code Playgroud)

如果我每次为每个变量添加这样的东西,它会起作用,但它会很混乱.

如果某个变量在运行过程中为Inf,我可以让MatLab停止或暂停或弹出警告消息吗?

Tro*_*kin 6

Matlab有一个很好的调试套件,适用于许多即时条件.特别是命令1

dbstop if naninf
Run Code Online (Sandbox Code Playgroud)

在找到条件NaNInf条件后暂停执行.文档给出一个例子.使用此功能的唯一潜在缺点是,如果任何变量被初始化为NaN或者Inf某些代码会执行暂停(由于我的困惑).

dbstop确实有一个更精确和可靠的暂停执行系统,但我认为naninf选项与良好的测试相结合是一个开始进行一般开发的好地方.


1通过转到断点>更多错误和警告处理选项> NaN或Inf并选择正确的单选按钮,可以从GUI调用相同的行为.