Process columns of matrix with principal component analysis
[Y,PS] = processpca(X,maxfrac)
[Y,PS] = processpca(X,FP)
Y = processpca('apply',X,PS)
X = processpca('reverse',Y,PS)
name = processpca('name')
fp = processpca('pdefaults')
names = processpca('pdesc')
processpca('pcheck',fp);
processpca
processes matrices using principal
component analysis so that each row is uncorrelated, the rows are
in the order of the amount they contribute to total variation, and
rows whose contribution to total variation are less than maxfrac
are
removed.
[Y,PS] = processpca(X,maxfrac)
takes X
and
an optional parameter,
X 

maxfrac  Maximum fraction of variance for removed rows (default is 0) 
and returns
Y 

PS  Process settings that allow consistent processing of values 
[Y,PS] = processpca(X,FP)
takes parameters
as a struct: FP.maxfrac
.
Y = processpca('apply',X,PS)
returns Y
,
given X
and settings PS
.
X = processpca('reverse',Y,PS)
returns X
,
given Y
and settings PS
.
name = processpca('name')
returns the name
of this process method.
fp = processpca('pdefaults')
returns default
process parameter structure.
names = processpca('pdesc')
returns the
process parameter descriptions.
processpca('pcheck',fp);
throws an error
if any parameter is illegal.
Here is how to format a matrix with an independent row, a correlated row, and a completely redundant row so that its rows are uncorrelated and the redundant row is dropped.
x1_independent = rand(1,5) x1_correlated = rand(1,5) + x1_independent; x1_redundant = x1_independent + x1_correlated x1 = [x1_independent; x1_correlated; x1_redundant] [y1,ps] = processpca(x1)
Next, apply the same processing settings to new values.
x2_independent = rand(1,5) x2_correlated = rand(1,5) + x1_independent; x2_redundant = x1_independent + x1_correlated x2 = [x2_independent; x2_correlated; x2_redundant]; y2 = processpca('apply',x2,ps)
Reverse the processing of y1
to get x1
again.
x1_again = processpca('reverse',y1,ps)
Values in rows whose elements are not all the same value are set to
y = 2*(xminx)/(maxxminx)  1;
Values in rows with all the same value are set to 0.