function [Q,R] = mgs(A) % MGS modified Gram-Schmidt algorithm % % See also CLGS, QR % % tire de: LN Trefethen & D Bau III, Numerical Linear Algebra, 1997 SIAM Philadelphia [m,n] = size(A); v = A; R = zeros(n,n); Q = zeros(m,n); for i=1:n v(:,i) = A(:,i); end for i=1:n R(i,i) = norm(v(:,i),2); Q(:,i) = v(:,i)/R(i,i); for j = (i+1):n R(i,j) = (conj(Q(:,i))')*v(:,j); v(:,j) = v(:,j) - R(i,j)*Q(:,i); end end