Global Index (short | long) | Local contents | Local Index (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 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; wgt = sqrt(lam(1:nkp)*(m-1)); for i = 1:nkp pcs(:,i) = pcs(:,i)*wgt(i); lds(:,i) = lds(:,i)./wgt(i); end end