当出现除0或Inf值时,停止或暂停运行MatLab

当出现除0或Inf值时,停止或暂停运行MatLab,matlab,Matlab,当有这么多的m文件和这么多的计算时,跟踪为什么这个和那个出错真的是一项艰巨的任务 通常情况下,代码中的某个地方被0除,或者为某个变量保存Inf值 我想让它更容易检查。一种方法是写作 if a == Inf display('a is infinite') keyboard end 如果每次为每个变量添加这样的内容,它会工作,但会很混乱 如果某个变量在运行过程中处于Inf状态,我是否可以使MatLab停止或暂停,或弹出警告消息?MatLab对许多动态条件有很好的适应性。 特别是命令1

当有这么多的m文件和这么多的计算时,跟踪为什么这个和那个出错真的是一项艰巨的任务

通常情况下,代码中的某个地方被0除,或者为某个变量保存Inf值

我想让它更容易检查。一种方法是写作

if a == Inf
   display('a is infinite')
   keyboard
end
如果每次为每个变量添加这样的内容,它会工作,但会很混乱

如果某个变量在运行过程中处于Inf状态,我是否可以使MatLab停止或暂停,或弹出警告消息?

MatLab对许多动态条件有很好的适应性。 特别是命令1

它将在发现
NaN
Inf
条件后暂停执行一行。给出了一个实例。使用此功能的唯一潜在缺点是,如果任何变量被初始化为
NaN
Inf
,则会出现暂停,这是某些代码所做的(让我感到困惑)

确实有一个更精确、潜在更健壮的暂停执行系统,但我认为结合良好测试的
naninf
选项是一般开发的良好起点



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

非常感谢!然而,在我当前的项目中,拥有NaN是很正常的,而Inf是绝对错误的。如何使其在Inf发生时停止或暂停,而在NaN发生时不停止或暂停?如果有一些MatLab内置的m文件使“dbstop If naninf”起作用,那么我可能可以编辑m文件,使其仅在Inf发生时停止。这可能吗?@user42459要获得更精确的控制,我想作为一个起点,你可能需要做更多的工作
NaN
s和
Inf
s在IEEE算法中都是例外,因此Matlab在默认错误处理选项中对待它们是相同的。不幸的是,一些程序员最终明确地使用了
NaN
s,而它们实际上只能通过计算生成。嗨,上次我不明白,现在我也有同样的问题,但仍然不明白。我真的是个新手。但是我可以问一下,是否至少可以使“dbstop if inf”仅在工作区中有inf时停止?
dbstop if naninf