% % 12.747 Lecture 10; Demo 1 % % Calculation of a simple under-determined problem using SVD % S. Doney, Sept. 30th 2002 % Design model and compute data for a % under-determined system with 2 data points % and 3 model parameters n=2; m=3; r=2; % disp('n m r') [n m r] pause disp('design matrix') A=[1 0 0; 0 1/2 1/2] pause x_true = [2 1 -1]'; b_true = A*x_true; % compute SVD and examine the singular values [U,S,V] = svd(A); disp('compute singular value decomposition') S pause % only keep the first r non-zero eigenvalues disp('only keep 2 non-zero eigenvalues') S_r = S(:,1:r) pause W_r = diag(1./diag(S_r)); % only keep the first r columns of V U_r=U; U_r pause V pause V_r=V(:,1:r); V_r pause x_est = (V_r*W_r*U_r')*b_true; disp('x_est = (V_r*W_r*U_r^T)*b_true') disp('x_true x_est') [x_true x_est] pause % check solution disp('check solution b_true A*x_est') [b_true A*x_est] pause % check null space disp('check null space assumption A*V(:,3)') A*V(:,3) pause %compute model parameter resolution disp('compute model resolution V_r*V_r^T') V_r*V_r' pause %compute data resolution disp('compute data resolution: U_r*U_r^T') U_r*U_r' pause