符号数学工具箱在计算为NaN时出现被零除错误



我刚刚更新到Matlab 2014a。我有很多使用符号数学工具箱的脚本,它们过去工作得很好,但现在遇到了以下错误:

Error using mupadmex
Error in MuPAD command: Division by zero. [_power]
  Evaluating: symobj::trysubs

我不能在这里发布我的实际代码,但这里有一个简化的例子:

syms f x y
f = x/y
results = double(subs(f, {'x','y'}, {1:10,-4:5}))

在我的实际脚本中,我将两个23x23网格的值传递给一个复杂的函数,我事先不知道这些值中的哪一个会导致被零除。我在谷歌上能找到的一切都只是告诉我不要尝试一个会导致被零除的评估。没有帮助!我曾经为那些无法评估的人获取"inf"(或"NaN"-我记不清了),当我对这些数据进行下一步操作时,我可以很容易地进行筛选。

有人知道如何迫使Matlab 2014a恢复这种行为而不是抛出错误吗?还是我注定要永远运行旧版本的Matlab,或者为了避免被零除而改变我的方法,经历巨大的痛苦?

您可以定义一个具有您想要的行为的除法,此除法函数返回inf除以零:

mydiv=@(x,y)x/(dirac(y)+y)+dirac(y)
f = mydiv(x,y)
results = double(subs(f, {'x','y'}, {1:10,-4:5}))

最新更新