Matlab:如何捕捉警告

时间:2014-06-23 09:57:21

标签: matlab warnings

我在MATLAB中运行一些数据处理工作,求解器使用BACKSLASH运算符。有时候,我会收到这样的警告:

Warning: Rank deficient, rank = 1390, tol = 1.335195e-010.
Warning: Rank deficient, rank = 1386, tol = 1.333217e-010.

我想抓住那些警告。 我正在尝试将警告转换为错误,然后按照标题“陷阱警告”中的说明捕获它: http://undocumentedmatlab.com/blog/trapping-warnings-efficiently 在该示例中,以下字符串已用于将警告转换为错误:

s = warning('error', 'MATLAB:DELETE:Permission');

但是,我不确定我的案例使用什么字符串。我尝试使用

s = warning('error', 'Warning: Rank deficient’);

但是,它没有用。 任何帮助将不胜感激。

此致 DK

2 个答案:

答案 0 :(得分:10)

您需要指定警告标识符,而不是警告文本。您可以使用lastwarn的双输出形式找到标识符:

[msgstr, msgid] = lastwarn

在您的情况下,我认为您想要的标识符为'MATLAB:rankDeficientMatrix'

答案 1 :(得分:6)

您可以尝试使用lastwarn作为替代方案。分割后,将其调用并将其与strcmp进行比较,然后将其与通常的警告消息进行比较,如果是您发出的警告消息,则可以使用error手动抛出所需的错误。

根据您的建议:您可以重置lastwarn抛出空警告warning('')