Documentation of regress_eof


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


Function Synopsis

[out, ccoef] = regress_eof(temp, pcs, lags);

Help text


  [out, ccoef] = regress_eof(dat, pcs, lags);

  Here 'dat' refers to the variable to regress onto 'pcs'.

  The variable 'lags' refers to a vector of leads/lags, where
    -1 refers to 'dat' leading 'pcs', and +1 refers to 'pcs'
    leading 'dat'.


Cross-Reference Information

This function calls

Listing of function regress_eof

function [out, ccoef] = regress_eof(temp, pcs, lags);

if nargin < 2;
  error('There must be at least 2 inputs, ''dat'' and ''pcs'' ');
elseif nargin < 3;
  lags = 0;
end

sz_temp = size(temp);
ndim = length(sz_temp);
temp = reshape(temp, sz_temp(1), prod(sz_temp(2:ndim)));
clim = mean(temp);
kp = find(~isnan(clim));
temp = temp(:,kp);
[temp, tem] = remove_mean(temp);
stdtemp = std(temp);

nlag = length(lags);
num = 1;

if (size(pcs,1)==1); pcs=pcs'; end;
timeseries = (pcs(:,num) - mean(pcs(:,num)))./std(pcs(:,num));

for j = 1:nlag;
  if lags(j) > 0;
    tm = timeseries(1:(sz_temp(1)-lags(j)));
    tem = temp((1+lags(j)):sz_temp(1),:);
  elseif lags(j) < 0;
    tm = timeseries((1-lags(j)):sz_temp(1));
    tem = temp(1:(sz_temp(1)+lags(j)),:);
  elseif lags(j) == 0;
    tm = timeseries;
    tem = temp;
  end

  out(j, :) = tm' * tem ./ (sz_temp(1)-abs(lags(j))-1);
  ccoef(j,:) = out(j,:) ./ stdtemp;
end;

tem = NaN*ones(nlag, prod(sz_temp(2:ndim)));
tem(:,kp) = out;
out = reshape(tem, [nlag sz_temp(2:ndim)]);

tem = NaN*ones(nlag, prod(sz_temp(2:ndim)));
tem(:,kp) = ccoef;
ccoef = reshape(tem, [nlag sz_temp(2:ndim)]);