Global Index (all files) (short | long) | Local Index (files in subdir) (short | long)
[lam, lds, pcs, per] = eof_dan(data, nkp);
[lam, lds, pcs, per] = eof_dan(data); This function assumes that [ntim, npts] = size(data); that is, each column is a time series for a different point.
| This function is called by | |
|---|---|
function [lam, lds, pcs, per] = eof_dan(data, nkp);
if nargin == 1;
nkp = 10;
end
if ndims(data) > 2;
resiz = 1;
datsiz = size(data);
data = reshape(data, datsiz(1), prod(datsiz(2:end)));
end
[m, n] = size(data);
rot = (m < n);
if rot;
data = data'; %[m, n] = size(data);
end
%rot = 0;
c = data' * data / (m-1);
[lds, lam] = eig(c);
l = diag(lam);
[lam, k] = sort(l'); lds = lds(:,k);
lam = fliplr(lam);
lds = fliplr(lds); lds = lds(:,1:nkp);
per = lam * 100 / sum(lam);
pcs = data*lds;
if rot;
tem = pcs;
pcs = lds;
lds = tem;
for i = 1:nkp;
pcs(:,i) = pcs(:,i) * sqrt(lam(i)*(m-1));
lds(:,i) = lds(:,i) / sqrt(lam(i)*(m-1));
end
end