function data=locdetrend(data,Fs,movingwin)
% Remove running line fit (using local linear regression)-continuous
% processes
% Usage: data=locdetrend(data,Fs,movingwin)
% Inputs:
% Note that units of Fs, movinwin have to be consistent.
% data (data as a matrix times x channels or a single vector)
% Fs (sampling frequency) - optional. Default 1
% movingwin (length of moving window, and stepsize) [window winstep] - optional.
% Default. window=full length of data (global detrend).
% winstep=window -- global detrend
%
% Output:
% data: (locally detrended data)
data=change_row_to_column(data);
[N,C]=size(data);
if nargin < 2 || isempty(Fs); Fs=1; end;
if nargin < 3 || isempty(movingwin); movingwin=[N/Fs N/Fs]; end;
Tw=movingwin(1); Ts=movingwin(2);
if Ts>Tw; error('Use step size shorter than window size'); end;
n=round(Fs*Tw);
dn=round(Fs*Ts);
if ~isreal(data)
yr=real(data);
yi=imag(data);
if n==N;
yr=detrend(yr);
yi=detrend(yi);
data=yr+i*yi;
else;
for ch=1:C
tmp=runline(yr(:,ch),n,dn);
yr=yr-tmp;
tmp=runline(yi(:,ch),n,dn);
yi=yi-tmp;
data(:,ch)=yr+i*yi;
end;
end;
else
if n==N;
data=detrend(data);
else;
for ch=1:C;
tmp=runline(data(:,ch),n,dn);
data(:,ch)=data(:,ch)-tmp;
end;
end
end