diff matrixcomp/gs_m.m @ 0:8f23314345f4 draft

Create local repository for matrix toolboxes. Step #0 done.
author Antonio Pino Robles <data.script93@gmail.com>
date Wed, 06 May 2015 14:56:53 +0200
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/matrixcomp/gs_m.m	Wed May 06 14:56:53 2015 +0200
@@ -0,0 +1,21 @@
+function [Q, R] = gs_m(A)
+%GS_M    Modified Gram-Schmidt QR factorization.
+%        [Q, R] = GS_M(A) uses the modified Gram-Schmidt method to compute the
+%        factorization A = Q*R for m-by-n A of full rank,
+%        where Q is m-by-n with orthonormal columns and R is n-by-n.
+
+%        Reference:
+%        N. J. Higham, Accuracy and Stability of Numerical Algorithms,
+%        Second edition, Society for Industrial and Applied Mathematics,
+%        Philadelphia, PA, 2002; sec 19.8.
+
+[m, n] = size(A);
+Q = zeros(m,n);
+R = zeros(n);
+
+for k=1:n
+    R(k,k) = norm(A(:,k));
+    Q(:,k) = A(:,k)/R(k,k);
+    R(k,k+1:n) = Q(:,k)'*A(:,k+1:n);
+    A(:,k+1:n) = A(:,k+1:n) - Q(:,k)*R(k,k+1:n);
+end