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