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.
function [lam, lds, pcs, per] = eof_dan(data, nkp);
if nargin == 1;
nkp = 10;
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;
wgt2 = sqrt(lam*(m-1));
data = data';
lam = lam*(sum(var(data))/sum(lam));
for i = 1:nkp
pcs(:,i) = pcs(:,i)*sqrt(lam(i)*(n-1));
lds(:,i) = lds(:,i)./(wgt2(i));
end
end