Home > chronux_1_50 > continuous > rmlinesmovingwinc.m

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,f0)

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 (can take values -1,0,1,2...). 
                    -1 corresponds to no padding, 0 corresponds to padding
                    to the next highest power of 2 etc.
                       e.g. For N = 500, if PAD = -1, we do not pad; if PAD = 0, we pad the FFT
                       to 512 points, if pad=1, we pad to 1024 points etc.
                       Defaults to 0.
        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.
       f0          frequencies at which you want to remove the
                   lines - if unspecified the program uses the f statistic
                   to determine appropriate lines.

  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,f0)
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 (can take values -1,0,1,2...).
0028 %                    -1 corresponds to no padding, 0 corresponds to padding
0029 %                    to the next highest power of 2 etc.
0030 %                       e.g. For N = 500, if PAD = -1, we do not pad; if PAD = 0, we pad the FFT
0031 %                       to 512 points, if pad=1, we pad to 1024 points etc.
0032 %                       Defaults to 0.
0033 %        p            (P-value to calculate error bars for) - optional.
0034 %        Defaults to 0.05/Nwin where Nwin is length of window which
0035 %        corresponds to a false detect probability of approximately 0.05.
0036 %       plt         (y/n for plot and no plot respectively) - default no
0037 %                   plot.
0038 %       f0          frequencies at which you want to remove the
0039 %                   lines - if unspecified the program uses the f statistic
0040 %                   to determine appropriate lines.
0041 %
0042 %  Outputs:
0043 %       datafit        (fitted sine waves)
0044 %       datac          (cleaned up data)
0045 if nargin < 2; error('Need data and window parameters'); end;
0046 if nargin < 4 || isempty(params); params=[]; end; 
0047 [tapers,pad,Fs,fpass,err,trialave,params]=getparams(params); % set defaults for params
0048 clear err trialave
0049 if nargin < 6; plt='n'; end;
0050 %
0051 % Window,overlap and frequency information
0052 %
0053 data=change_row_to_column(data);
0054 [N,C]=size(data);
0055 Nwin=round(Fs*movingwin(1)); % number of samples in window
0056 Nstep=round(movingwin(2)*Fs); % number of samples to step through
0057 Noverlap=Nwin-Nstep; % number of points in overlap
0058 %
0059 % Sigmoidal smoothing function
0060 %
0061 if nargin < 3 || isempty(tau); tau=10; end; % smoothing parameter for sigmoidal overlap function
0062 x=(1:Noverlap)';
0063 smooth=1./(1+exp(-tau.*(x-Noverlap/2)/Noverlap)); % sigmoidal function
0064 smooth=repmat(smooth,[1 C]);
0065 %
0066 % Start the loop
0067 %
0068 if nargin < 5 || isempty(p); p=0.05/Nwin; end % default for p value
0069 if nargin < 7 || isempty(f0); f0=[]; end; % empty set default for f0 - uses F statistics to determine the frequencies
0070 params.tapers=dpsschk(tapers,Nwin,Fs); % check tapers
0071 winstart=1:Nstep:N-Nwin+1;
0072 nw=length(winstart); 
0073 datafit=zeros(winstart(nw)+Nwin-1,C);
0074 Amps=cell(1,nw);
0075 freqs=cell(1,nw);
0076 for n=1:nw;
0077    indx=winstart(n):winstart(n)+Nwin-1;
0078    datawin=data(indx,:);
0079    [datafitwin,as,fs]=fitlinesc(datawin,params,p,'n',f0);
0080    Amps{n}=as;
0081    freqs{n}=fs;
0082    datafitwin0=datafitwin;
0083    if n>1; datafitwin(1:Noverlap,:)=smooth.*datafitwin(1:Noverlap,:)+(1-smooth).*datafitwin0(Nwin-Noverlap+1:Nwin,:);end;
0084    datafit(indx,:)=datafitwin;
0085 end;
0086 datac=data(1:size(datafit,1),:)-datafit;     
0087 if strcmp(plt,'y');
0088     [S,f]=mtspectrumsegc(data,movingwin(1),params);
0089     [Sc,fc]=mtspectrumsegc(datac,movingwin(1),params);
0090     plot(f,10*log10(S),fc,10*log10(Sc));
0091 end;

Generated on Mon 09-Oct-2006 00:54:52 by m2html © 2003