【问题标题】:Matlab - handle warnings from `solve()` functionMatlab - 处理来自 `solve()` 函数的警告
【发布时间】:2014-11-16 23:02:02
【问题描述】:

我必须在我的 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.

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

如何做到这一点?

提前致谢

【问题讨论】:

  • 您是否尝试在求解操作周围包裹try, catch 块?
  • 您还应该尝试打开warning on backtrace,它会在出现异常时打印堆栈跟踪。您可以确定抛出错误的级别并拦截它。除此之外,您可能只需要禁止显示警告。
  • @MylesBaker 我试过了,不行

标签: matlab warnings


【解决方案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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-18
    • 1970-01-01
    • 2019-11-05
    • 2019-01-04
    • 2014-05-31
    相关资源
    最近更新 更多