# Documentation of detrend_NaN

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

## Function Synopsis

`y = detrend(x)`

## Help text

```DETREND Remove a linear trend from a vector, usually for FFT processing,
for data with NaN's (this routine ignores NaN's).  NOTE:  this
routine assumes evenly spaced data

Y = DETREND(X) removes the best straight-line fit linear trend from
the data in vector X and returns it in vector Y.  If X is a matrix,
DETREND removes the trend from each column of the matrix.

This routine automatically reshapes to remove the trend from the
first dimension.

```

## Listing of function detrend_NaN

```function y = detrend(x)

%  Reshape x if necessary, assuming the dimension to be
%  detrended is the first

szx = size(x); ndimx = length(szx);
if ndimx > 2;
x = reshape(x, szx(1), prod(szx(2:ndimx)));
end

n = size(x,1);
if n == 1,
x = x(:);			% If a row, turn into column vector
end
[N, m] = size(x);
y = repmat(NaN, [N m]);

for i = 1:m;
kp = find(~isnan(x(:,i)));
a = [(kp-1)/(max(kp)-min(kp)) ones(length(kp), 1)];  %  Build regressor
y(kp,i) = x(kp,i) - a*(a\x(kp,i));
end

if n == 1
y = y.';
end

%  Reshape output so it is the same dimension as input

if ndimx > 2;
y = reshape(y, szx);
end

```