当用于评估NaN时,符号数学工具箱达到除以零误差

时间:2014-09-17 13:35:51

标签: matlab symbolic-math

我最后刚刚更新到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网格值传递给一个复杂函数,我事先并不知道这些值中的哪一个会导致除以零。我在Google上找到的所有内容都告诉我不要尝试进行评估,以便将除以零。没用!我过去常常得到' inf' (或者' NaN' - 我无法特别记住)对于那些无法评估我可以在我对此数据执行后续步骤时轻松过滤的内容。

有谁知道如何强制Matlab 2014a回到那种行为而不是抛出错误?或者我注定要永远运行旧版本的Matlab,或者经历了改变我的方法以避免零除的重大痛苦?

1 个答案:

答案 0 :(得分:2)

您可以定义具有所需行为的分区,此除法函数返回inf以除以零:

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