我在MATLAB中运行一些数据处理工作,求解器使用BACKSLASH运算符.有时,我得到这样的警告:
Warning: Rank deficient, rank = 1390, tol = 1.335195e-010.
Warning: Rank deficient, rank = 1386, tol = 1.333217e-010.
Run Code Online (Sandbox Code Playgroud)
我想抓住那些警告.我正在尝试将警告转换为错误,然后按照标题"陷阱警告"中所述捕获它:http: //undocumentedmatlab.com/blog/trapping-warnings-efficiently 在示例中,以下字符串已用于将警告转换为错误:
s = warning('error', 'MATLAB:DELETE:Permission');
Run Code Online (Sandbox Code Playgroud)
但是,我不确定我的案例使用什么字符串.我试过用
s = warning('error', 'Warning: Rank deficient’);
Run Code Online (Sandbox Code Playgroud)
但是,它没有用.任何帮助,将不胜感激.
问候,DK
Edr*_*ric 10
您需要指定警告标识符,而不是警告文本.您可以使用以下两种输出形式查找标识符lastwarn:
[msgstr, msgid] = lastwarn
Run Code Online (Sandbox Code Playgroud)
在您的情况下,我认为您想要的标识符是'MATLAB:rankDeficientMatrix'.