1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
|
function [B,A] = FindLinMod(X,n_dimension)
% [B,A] = FindLinMod(X,n_dimension)
%
% Find an n_dimension linear model for the
% data in the columns of X.
%
% B - basis matrix for the linear model
% (n_wavelengths by n_dimension)
% A - coefficients to approximate data within model
% (n_dimension by n_data)
% X - matrix whose columns contain the data
% (n_wavelengths by n_data)
% (n_data >= n_dimension)
% n_dimension - dimension of the linear model to find
% Do the singular value decomposition
% (If X is very large you may need a bigger
% computer.)
[U,D,V] = svd(X);
% Extract the appropriate parts of the SVD
B = U(:,1:n_dimension);
temp = D*V';
A = temp(1:n_dimension,:);
|