Matlab - 处理来自`solve()`函数的警告

时间:2014-09-22 21:16:59

标签: matlab warnings

我必须在我的matlab代码中解决系统方程式。

首先,我尝试通过将未知变量定义为

来使用符号演算来解决它
syms x1 x2 x3 'real'

并使用函数solve

[sx1 sx2 sx3] = solve(f1 == 0, f2 == 0, f3 == 0);

其中f1, f2, f3x1, x2, x3的函数。

我知道有时可以找到解决方案,但有些情况下解决方案不存在而且我得到了

Warning: Explicit solution could not be found.

在这种情况下,我想以某种方式“捕捉”这个警告(屏幕上没有任何打印!)并运行其他代码。

如何实现这一目标?

提前致谢

1 个答案:

答案 0 :(得分:1)

如果要检查是否找不到解决方案,可以检查sx1, sx2, sx3是否为空 - 如果找不到解决方案,则不会分配它们,因此将为空

[sx1 sx2 sx3] = solve(f1 == 0, f2 == 0, f3 == 0);
if isempty(sx1)
    % DO OTHER STUFF
end

如果您想阻止显示警告,可以使用以下命令将其关闭:

warning off symbolic:solve:warnmsg3

理想情况下,您应该在完成后立即再次打开它,以防止可能出现混乱。