rmlinesmovingwinc

PURPOSE ^

fits significant sine waves to data (continuous data) using overlapping windows.

SYNOPSIS ^

function [datac,datafit,Amps,freqs]=rmlinesmovingwinc(data,movingwin,tau,params,p,plt)

DESCRIPTION ^

 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)

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

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;

Generated on Tue 28-Mar-2006 14:37:41 by m2html © 2003