Documentation of eof_dan


Global Index (all files) (short | long) | Local Index (files in subdir) (short | long)


Function Synopsis

[lam, lds, pcs, per] = eof_dan(data, nkp);

Help text


  [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.


Cross-Reference Information

This function is called by

Listing of function eof_dan

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