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

时间:2016-04-14 22:54:29

标签: matlab

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

通常事实证明,代码中的某处除以0,或者为某些变量保存了Inf的值。

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

if a == Inf
   display('a is infinite')
   keyboard
end

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

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

1 个答案:

答案 0 :(得分:6)

对于许多即时条件,Matlab有一个很好的debugging suite。 特别是,命令 1

dbstop if naninf

会在找到NaNInf条件后暂停执行一行。给出了一个例子on the documentation。使用此功能的唯一潜在缺点是,如果任何变量初始化为NaNInf,则会发生暂停,而某些代码会执行此操作(令我困惑)。

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

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