function [Q,R]=gram2(A,B) [m,n]=size(B); if n==1 then a=sqrt(B'*A*B) Q=B/a; R=a; else [Q,R]=gram2(A,B(:,1:(n-1))); C1=Q'*A*B(:,n); C=B(:,n)-Q*C1; a=sqrt(C'*A*C); C=C/a; Q=[Q C]; R=[R C1;zeros(1,n-1) a] end endfunction