function [Q,R]=mgs(X) % % function [Q,R]=mgs(X) % Modified Gram-Schmidt algorithm for QR factorization % [m,n]=size(X); R=[]; Q=[]; p=min(m,n); for k=1:p-1 rkk=norm(X(:,k)); qk=X(:,k)/rkk; v=X(:,k+1:p)'*qk; X(:,k+1:p)=X(:,k+1:p)-qk*v'; Q=[Q qk ]; R=[R ; zeros(1,k-1) rkk v']; end; rkk=norm(X(:,p)); qk=X(:,p)/rkk; Q=[Q qk]; R=[R ; zeros(1,p-1) rkk ];