function [Q,R] = clgs(A) % FUNCTION [Q,R] = clgs(A) % Classical Gram Schmidt Algorithm % Find Q,R such that A = QR % % Input: A -- matrix to be factorized % Output: Q -- unitary matrix % R -- upper triangular matrix [m,n] = size(A); Q = zeros(m,n); R = zeros(n,n); for j = 1:n v = A(:,j); for i = 1:j-1 R(i,j) = Q(:,i)'*A(:,j); v = v - R(i,j)*Q(:,i); end R(j,j) = norm(v); Q(:,j) = v/R(j,j); end