


fits significant sine waves to data (continuous data) using overlapping windows.
Usage: [datac,datafit]=rmlinesmovingwinc(data,movingwin,tau,params,p,plt)
Inputs:
Note that units of Fs, fpass have to be consistent.
data (data in [N,C] i.e. time x channels/trials or as a single vector) - required.
movingwin (in the form [window winstep] i.e length of moving
window and step size)
Note that units here have
to be consistent with
units of Fs - required
tau parameter controlling degree of smoothing for the amplitudes - we use the
function 1-1/(1+exp(-tau*(x-Noverlap/2)/Noverlap) in the region of overlap to smooth
the sinewaves across the overlap region. Noverlap is the number of points
in the overlap region. Increasing tau leads to greater overlap smoothing,
typically specifying tau~10 or higher is reasonable. tau=1 gives an almost
linear smoothing function. tau=100 gives a very steep sigmoidal. The default is tau=10.
params structure containing parameters - params has the
following fields: tapers, Fs, fpass, pad
tapers (parameters for calculating tapers [NW,K]) - optional. Defaults to [3 5]
Fs (sampling frequency) -- optional. Defaults to 1.
fpass (frequency band to be used in the calculation in the form
[fmin fmax])- optional.
Default all frequencies between 0 and Fs/2
pad (padding factor for the FFT) - optional. Defaults to 0.
e.g. For N = 500, if PAD = 0, we pad the FFT
to 512 points; if PAD = 2, we pad the FFT
to 2048 points, etc.
p (P-value to calculate error bars for) - optional.
Defaults to 0.05/Nwin where Nwin is length of window which
corresponds to a false detect probability of approximately 0.05.
plt (y/n for plot and no plot respectively) - default no
plot.
Outputs:
datafit (fitted sine waves)
datac (cleaned up data)

0001 function [datac,datafit,Amps,freqs]=rmlinesmovingwinc(data,movingwin,tau,params,p,plt) 0002 % fits significant sine waves to data (continuous data) using overlapping windows. 0003 % 0004 % Usage: [datac,datafit]=rmlinesmovingwinc(data,movingwin,tau,params,p,plt) 0005 % 0006 % Inputs: 0007 % Note that units of Fs, fpass have to be consistent. 0008 % data (data in [N,C] i.e. time x channels/trials or as a single vector) - required. 0009 % movingwin (in the form [window winstep] i.e length of moving 0010 % window and step size) 0011 % Note that units here have 0012 % to be consistent with 0013 % units of Fs - required 0014 % tau parameter controlling degree of smoothing for the amplitudes - we use the 0015 % function 1-1/(1+exp(-tau*(x-Noverlap/2)/Noverlap) in the region of overlap to smooth 0016 % the sinewaves across the overlap region. Noverlap is the number of points 0017 % in the overlap region. Increasing tau leads to greater overlap smoothing, 0018 % typically specifying tau~10 or higher is reasonable. tau=1 gives an almost 0019 % linear smoothing function. tau=100 gives a very steep sigmoidal. The default is tau=10. 0020 % params structure containing parameters - params has the 0021 % following fields: tapers, Fs, fpass, pad 0022 % tapers (parameters for calculating tapers [NW,K]) - optional. Defaults to [3 5] 0023 % Fs (sampling frequency) -- optional. Defaults to 1. 0024 % fpass (frequency band to be used in the calculation in the form 0025 % [fmin fmax])- optional. 0026 % Default all frequencies between 0 and Fs/2 0027 % pad (padding factor for the FFT) - optional. Defaults to 0. 0028 % e.g. For N = 500, if PAD = 0, we pad the FFT 0029 % to 512 points; if PAD = 2, we pad the FFT 0030 % to 2048 points, etc. 0031 % p (P-value to calculate error bars for) - optional. 0032 % Defaults to 0.05/Nwin where Nwin is length of window which 0033 % corresponds to a false detect probability of approximately 0.05. 0034 % plt (y/n for plot and no plot respectively) - default no 0035 % plot. 0036 % 0037 % 0038 % Outputs: 0039 % datafit (fitted sine waves) 0040 % datac (cleaned up data) 0041 if nargin < 2; error('Need data and window parameters'); end; 0042 if nargin < 4 || isempty(params); params=[]; end; 0043 [tapers,pad,Fs,fpass,err,trialave,params]=getparams(params); % set defaults for params 0044 clear err trialave 0045 if nargin < 6; plt='n'; end; 0046 % 0047 % Window,overlap and frequency information 0048 % 0049 data=change_row_to_column(data); 0050 [N,C]=size(data); 0051 Nwin=round(Fs*movingwin(1)); % number of samples in window 0052 Nstep=round(movingwin(2)*Fs); % number of samples to step through 0053 Noverlap=Nwin-Nstep; % number of points in overlap 0054 % 0055 % Sigmoidal smoothing function 0056 % 0057 if nargin < 3 || isempty(tau); tau=10; end; % smoothing parameter for sigmoidal overlap function 0058 x=(1:Noverlap)'; 0059 smooth=1./(1+exp(-tau.*(x-Noverlap/2)/Noverlap)); % sigmoidal function 0060 smooth=repmat(smooth,[1 C]); 0061 % 0062 % Start the loop 0063 % 0064 if nargin < 5 || isempty(p); p=0.05/Nwin; end % default for p value 0065 0066 params.tapers=dpsschk(tapers,Nwin,Fs); % check tapers 0067 winstart=1:Nstep:N-Nwin+1; 0068 nw=length(winstart); 0069 datafit=zeros(nw*Nwin,C); 0070 Amps=cell(1,nw); 0071 freqs=cell(1,nw); 0072 for n=1:nw; 0073 indx=winstart(n):winstart(n)+Nwin-1; 0074 datawin=data(indx,:); 0075 [datafitwin,as,fs]=fitlinesc(datawin,params,p,plt); 0076 Amps{n}=as; 0077 freqs{n}=fs; 0078 datafitwin0=datafitwin; 0079 if n>1; datafitwin(1:Noverlap,:)=smooth.*datafitwin(1:Noverlap,:)+(1-smooth).*datafitwin0(Nwin-Noverlap+1:Nwin,:);end; 0080 datafit(indx,:)=datafitwin; 0081 end; 0082 datac=data(1:size(datafit,1),:)-datafit;