Home > chronux_1_50 > pointbinned > cohgrampb.m

cohgrampb

PURPOSE ^

Multi-taper time-frequency coherence,cross-spectrum and individual spectra - two binned point processes

SYNOPSIS ^

function [C,phi,S12,S1,S2,t,f,zerosp,confC,phistd,Cerr]=cohgrampb(data1,data2,movingwin,params,fscorr)

DESCRIPTION ^

 Multi-taper time-frequency coherence,cross-spectrum and individual spectra - two binned point processes
 process 

 Usage:

 [C,phi,S12,S1,S2,t,f,zerosp,confC,phistd,Cerr]=cohgrampb(data1,data2,movingwin,params,fscorr)
 Input: 
 Note units have to be consistent. Thus, if movingwin is in seconds, Fs
 has to be in Hz. see chronux.m for more information.

       data1 (binned point process data in form samples x trials) -- required
       data2 (binned point process data in form samples x trials) -- required
       movingwin (in the form [window winstep] -- required
       params: structure with fields tapers, pad, Fs, fpass, err, trialave
       - optional
           tapers (precalculated tapers from dpss, or in the form [NW K] e.g [3 5]) -- optional. If not 
                                                 specified, use [NW K]=[3 5]
            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.
           Fs   (sampling frequency) - optional. Default 1.
           fpass    (frequency band to be used in the calculation in the form
                                   [fmin fmax])- optional. 
                                   Default all frequencies between 0 and Fs/2
           err  (error calculation [1 p] - Theoretical error bars; [2 p] - Jackknife error bars
                                   [0 p] or 0 - no error bars) - optional. Default 0.
           trialave (average over trials when 1, don't average when 0) -
           optional. Default 0
       fscorr   (finite size corrections, 0 (don't use finite size corrections) or 1 (use finite size corrections) - optional
                (available only for spikes). Defaults 0.
 Output:
       C (magnitude of coherency time x frequencies x trials for trialave=0; time x frequency for trialave=1)
       phi (phase of coherency time x frequencies x trials for no trial averaging; time x frequency for trialave=1)
       S12 (cross spectrum - time x frequencies x trials for no trial averaging; time x frequency for trialave=1)
       S1 (spectrum 1 - time x frequencies x trials for no trial averaging; time x frequency for trialave=1)
       S2 (spectrum 2 - time x frequencies x trials for no trial averaging; time x frequency for trialave=1)
       t (time)
       f (frequencies)
       zerosp (1 for windows and trials where spikes were absent (in either channel),zero otherwise)
       confC (confidence level for C at 1-p %) - only for err(1)>=1
       phistd - jackknife/theoretical standard deviation for phi - Note that 
                phi + 2 phistd and phi -2 phistd will give 95% confidence bands for phi - only for err(1)>=1
       Cerr  (Jackknife error bars for C - use only for Jackknife - err(1)=2)

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 function [C,phi,S12,S1,S2,t,f,zerosp,confC,phistd,Cerr]=cohgrampb(data1,data2,movingwin,params,fscorr)
0002 % Multi-taper time-frequency coherence,cross-spectrum and individual spectra - two binned point processes
0003 % process
0004 %
0005 % Usage:
0006 %
0007 % [C,phi,S12,S1,S2,t,f,zerosp,confC,phistd,Cerr]=cohgrampb(data1,data2,movingwin,params,fscorr)
0008 % Input:
0009 % Note units have to be consistent. Thus, if movingwin is in seconds, Fs
0010 % has to be in Hz. see chronux.m for more information.
0011 %
0012 %       data1 (binned point process data in form samples x trials) -- required
0013 %       data2 (binned point process data in form samples x trials) -- required
0014 %       movingwin (in the form [window winstep] -- required
0015 %       params: structure with fields tapers, pad, Fs, fpass, err, trialave
0016 %       - optional
0017 %           tapers (precalculated tapers from dpss, or in the form [NW K] e.g [3 5]) -- optional. If not
0018 %                                                 specified, use [NW K]=[3 5]
0019 %            pad            (padding factor for the FFT) - optional (can take values -1,0,1,2...).
0020 %                    -1 corresponds to no padding, 0 corresponds to padding
0021 %                    to the next highest power of 2 etc.
0022 %                       e.g. For N = 500, if PAD = -1, we do not pad; if PAD = 0, we pad the FFT
0023 %                       to 512 points, if pad=1, we pad to 1024 points etc.
0024 %                       Defaults to 0.
0025 %           Fs   (sampling frequency) - optional. Default 1.
0026 %           fpass    (frequency band to be used in the calculation in the form
0027 %                                   [fmin fmax])- optional.
0028 %                                   Default all frequencies between 0 and Fs/2
0029 %           err  (error calculation [1 p] - Theoretical error bars; [2 p] - Jackknife error bars
0030 %                                   [0 p] or 0 - no error bars) - optional. Default 0.
0031 %           trialave (average over trials when 1, don't average when 0) -
0032 %           optional. Default 0
0033 %       fscorr   (finite size corrections, 0 (don't use finite size corrections) or 1 (use finite size corrections) - optional
0034 %                (available only for spikes). Defaults 0.
0035 % Output:
0036 %       C (magnitude of coherency time x frequencies x trials for trialave=0; time x frequency for trialave=1)
0037 %       phi (phase of coherency time x frequencies x trials for no trial averaging; time x frequency for trialave=1)
0038 %       S12 (cross spectrum - time x frequencies x trials for no trial averaging; time x frequency for trialave=1)
0039 %       S1 (spectrum 1 - time x frequencies x trials for no trial averaging; time x frequency for trialave=1)
0040 %       S2 (spectrum 2 - time x frequencies x trials for no trial averaging; time x frequency for trialave=1)
0041 %       t (time)
0042 %       f (frequencies)
0043 %       zerosp (1 for windows and trials where spikes were absent (in either channel),zero otherwise)
0044 %       confC (confidence level for C at 1-p %) - only for err(1)>=1
0045 %       phistd - jackknife/theoretical standard deviation for phi - Note that
0046 %                phi + 2 phistd and phi -2 phistd will give 95% confidence bands for phi - only for err(1)>=1
0047 %       Cerr  (Jackknife error bars for C - use only for Jackknife - err(1)=2)
0048 
0049 if nargin < 3; error('Need data1 and data2 and window parameters'); end;
0050 if nargin < 4; params=[]; end;
0051 [tapers,pad,Fs,fpass,err,trialave,params]=getparams(params);
0052 if nargin < 5 || isempty(fscorr); fscorr=0; end;
0053 
0054 if nargout > 8 && err(1)==0;
0055     error('When errors are desired, err(1) has to be non-zero.');
0056 end;
0057 if nargout > 10 && err(1)~=2; 
0058     error('Cerr computed only for Jackknife. Correct inputs and run again');
0059 end;
0060 [N,Ch]=check_consistency(data1,data2);
0061 
0062 Nwin=round(Fs*movingwin(1)); % number of samples in window
0063 Nstep=round(movingwin(2)*Fs); % number of samples to step through
0064 nfft=max(2^(nextpow2(Nwin)+pad),Nwin);
0065 f=getfgrid(Fs,nfft,fpass); 
0066 Nf=length(f);
0067 params.tapers=dpsschk(tapers,Nwin,Fs); % check tapers
0068 
0069 winstart=1:Nstep:N-Nwin+1;
0070 nw=length(winstart);
0071 if trialave;
0072    C=zeros(nw,Nf);
0073    S12=zeros(nw,Nf);
0074    S1=zeros(nw,Nf);
0075    S2=zeros(nw,Nf);
0076    phi=zeros(nw,Nf);
0077    Cerr=zeros(2,nw,Nf);
0078 %   phierr=zeros(2,nw,Nf);
0079    phistd=zeros(nw,Nf);
0080 else
0081    C=zeros(nw,Nf,Ch);
0082    S12=zeros(nw,Nf,Ch);
0083    S1=zeros(nw,Nf,Ch);
0084    S2=zeros(nw,Nf,Ch);
0085    phi=zeros(nw,Nf,Ch);
0086    Cerr=zeros(2,nw,Nf,Ch);
0087 %   phierr=zeros(2,nw,Nf,Ch);
0088    phistd=zeros(nw,Nf,Ch);
0089 end;
0090 zerosp=zeros(nw,Ch);
0091 
0092 for n=1:nw;
0093    indx=winstart(n):winstart(n)+Nwin-1;
0094    datawin1=data1(indx,:);datawin2=data2(indx,:);
0095    if nargout==11;
0096      [c,ph,s12,s1,s2,f,zsp,confc,phie,cerr]=coherencypb(datawin1,datawin2,params,fscorr);
0097 %      phierr(1,n,:,:)=squeeze(phie(1,:,:));
0098 %      phierr(2,n,:,:)=squeeze(phie(2,:,:));
0099      phistd(n,:,:)=phie;
0100      Cerr(1,n,:,:)=squeeze(cerr(1,:,:));
0101      Cerr(2,n,:,:)=squeeze(cerr(2,:,:));
0102    elseif nargout==10;
0103      [c,ph,s12,s1,s2,f,zsp,confc,phie]=coherencypb(datawin1,datawin2,params,fscorr);
0104 %      phierr(1,n,:,:)=squeeze(phie(1,:,:));
0105 %      phierr(2,n,:,:)=squeeze(phie(2,:,:));
0106      phistd(n,:,:)=phie;
0107    else
0108      [c,ph,s12,s1,s2,f,zsp]=coherencycpb(datawin1,datawin2,params,fscorr);
0109    end;
0110    C(n,:,:)=c;
0111    phi(n,:,:)=ph;
0112    S12(n,:,:)=s12;
0113    S1(n,:,:)=s1;
0114    S2(n,:,:)=s2;
0115    zerosp(n,:)=zsp;
0116 end;
0117 C=squeeze(C); phi=squeeze(phi);S12=squeeze(S12); S1=squeeze(S1); S2=squeeze(S2);zerosp=squeeze(zerosp);
0118 if nargout > 9; confC=confc; end;
0119 if nargout==11;Cerr=squeeze(Cerr);end;
0120 % if nargout==10; phierr=squeeze(phierr);end
0121 if nargout==10; phistd=squeeze(phistd);end
0122 winmid=winstart+round(Nwin/2);
0123 t=winmid/Fs;

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