Documentation of regress_justin

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

Function Synopsis

`y = lin_remove_NaN(xdat, xtim, tol, show);`

Help text

```
function Y = lin_remove_NaN ( Xdat , Xtim , tol , show ) ;

Y = lin_remove(Xdat, Xtim) removes the best linear fit of Xtim to
each column of Xdat.  If Xdat is N-dimensional, then it is
assumed that the time series Xtim will be removed from the first
dimension of Xdat.

This function ignores elements of Xdat and Xtim that have NaNs.

tol is the number of common points required between xdat(:,i) and
_every_ column of xtim, in order for xtim to be removed from xdat.
So, y will only have (max) as many rows as the least amount of data
in any column of xtim.

show = 'show', 'noshow', or 1, 0, respectively.

This routine is quicker than lin_remove_NaN_defunct, and seems to do
the same thing.
```

Cross-Reference Information

This function calls

Listing of function regress_justin

```function y = lin_remove_NaN(xdat, xtim, tol, show);

sz = size(xdat); ndim = length(sz);
if (ndim == 2) & (sz(1) == 1); xdat = xdat(:); end;
sz = size(xdat); ndim = length(sz);

if nargin < 3; tol = 2; end;

if nargin < 4; show = 0; end;
if isstr(show);
show = strcmp(show, 'show');
end

if (size(xdat, 1) ~= size(xtim, 1));
error('The number of columns of xdat and xtim must be equal');
end

[m1, n1] = size(xdat);
[m2, n2] = size(xtim);

%  Condense data to get rid of NaN's in Xtim
if n2 > 1;
kp_time = find(~isnan(sum(xtim')));
else
kp_time = find(~isnan(xtim));
end
nkp_time = length(kp_time);
xdat = xdat(kp_time,:); xtim = xtim(kp_time,:);

%  Start regressions and removals
if show; disp(['Number of iterations:  ' num2str(n1)]); end;

c = repmat(NaN, [n1, 1]);
for i = 1:n1;
if show;
disp(['Iteration ' num2str(i) ' of ' num2str(n1)]);
end;
if n2 > 1;
kp = find(sum( ~isnan((xdat(:,i)*ones(1,n2)) .* xtim)') == n2 );
else
kp = find(~isnan(xdat(:,i) .* xtim));
end
nkp = length(kp);
if nkp > tol
timeseries = standardize(xtim(kp,:));
c(i) = [1 1]*(timeseries\xdat(kp,i));
end
end

%  Reshape output so it is the same dimension as input

y = c;

if ndim > 2;
y = reshape(y, sz);
end
```