0001
0002 function varargout = mchol(m)
0003
0004 leng = length(m);
0005 for i=1:leng
0006 dets(i) = det(m(1:i, 1:i));
0007 end
0008
0009 sqdet = sqrt(dets);
0010 if isreal('sqdet')==0
0011 error('### matrix not positive definite')
0012 end
0013
0014 if(isa(m,'sym'))
0015 M = m;
0016 n = length( M );
0017 L = vpa(zeros( n, n ));
0018 for i=1:n
0019 L(i, i) = sqrt( M(i, i) - L(i, :)*L(i, :)' );
0020 for j=(i + 1):n
0021 L(j, i) = ( M(j, i) - L(i, :)*L(j, :)' )/L(i, i);
0022 end
0023 end
0024
0025 varargout{1} = L;
0026 end
0027
0028 end