2013-04-26 86 views
0

我想以编程方式找出A \ b失败(对于稀疏A),以便我可以运行一些特定于问题的逻辑。使用反斜线操作检测Matlab故障解决稀疏线性系统

A\b 

我得到打印到控制台警告,但我想知道这些条件(单数或接近奇异的)编程,所以我可以做一些具体问题的东西。

对于密集系统,我可以做

[soln, cond_recip] = linsolve(A,b); 
if cond_recip < 1e-15, ..., end 

但linsolve不适合稀疏矩阵工作,我不希望我的致密的基质。

回答

1

尝试以下操作:

%# temporarily set warning to issue errors (maybe there are others?) 
s = warning('error', 'MATLAB:nearlySingularMatrix'); %#ok<CTPCT> 

try 
    x = magic(4)\[34; 34; 34; 34]; 
catch ME 
    disp(ME.message) 
    %#.. problem specific stuff.. 
end 

%# restore warning state 
warning(s); 
+0

我从中学到这一招:http://undocumentedmatlab.com/blog/trapping-warnings-efficiently/ – Amro 2013-04-26 15:39:35