solveLin

PURPOSE ^

SYNOPSIS ^

function[x] = solveLin(A,B)

DESCRIPTION ^

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 function[x] = solveLin(A,B)
0002 
0003 s = warning('off', 'MATLAB:singularMatrix');
0004 warning('off','MATLAB:nearlySingularMatrix');
0005 
0006 t = (size(B,2) == 1);
0007 
0008 Ao2 = logical(A)|logical(A');
0009 
0010 black = false(size(B,1),1);
0011 gray = (any(B,2) ~= 0);
0012 while (sum(gray) > 0)
0013     black = black | gray;
0014     gray = any(Ao2(:,gray),2) & (~black);
0015 end
0016 
0017 A2 = A(black,black);
0018 B2 = B(black,:);
0019 if t % the case size(B) = 1
0020     x2 = A2\B2;
0021 %     if(any(any(isnan(x2))))
0022 %         x2 = pinv(full(A2))*B2;
0023 %     end
0024 %x2(isnan(x2)) = 0;
0025     x = zeros(size(B));
0026     x(black,:) = x2;
0027 else    %the case of size(B) > 1
0028     x2 = A2\B2(:,2:end);
0029 %     if(any(any(isnan(x2))))
0030 %         x2 = pinv(full(A2))*B2(:,2:end);
0031 %     end
0032     %x2(isnan(x2)) = 0;
0033     x = zeros(size(B));
0034     x(black,2:end) = x2;
0035     x(:,1) = 1-sum(x,2);
0036 end
0037 
0038 
0039 
0040 warning(s);

Generated on Thu 21-Jun-2012 15:39:23 by m2html © 2003