Home > chronux_0.5 > 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,phierr,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,phierr,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. 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.
           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 where spikes in either channel were absent,zero otherwise)
       confC (confidence level for C at 1-p %) - only for err(1)>=1
       phierr (error bars 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,phierr,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,phierr,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. Defaults to 0.
0020 %                       e.g. For N = 500, if PAD = 0, we pad the FFT
0021 %                       to 512 points; if PAD = 2, we pad the FFT
0022 %                       to 2048 points, etc.
0023 %           Fs   (sampling frequency) - optional. Default 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 %           err  (error calculation [1 p] - Theoretical error bars; [2 p] - Jackknife error bars
0028 %                                   [0 p] or 0 - no error bars) - optional. Default 0.
0029 %           trialave (average over trials when 1, don't average when 0) -
0030 %           optional. Default 0
0031 %       fscorr   (finite size corrections, 0 (don't use finite size corrections) or 1 (use finite size corrections) - optional
0032 %                (available only for spikes). Defaults 0.
0033 % Output:
0034 %       C (magnitude of coherency time x frequencies x trials for trialave=0; time x frequency for trialave=1)
0035 %       phi (phase of coherency time x frequencies x trials for no trial averaging; time x frequency for trialave=1)
0036 %       S12 (cross spectrum - time x frequencies x trials for no trial averaging; time x frequency for trialave=1)
0037 %       S1 (spectrum 1 - time x frequencies x trials for no trial averaging; time x frequency for trialave=1)
0038 %       S2 (spectrum 2 - time x frequencies x trials for no trial averaging; time x frequency for trialave=1)
0039 %       t (time)
0040 %       f (frequencies)
0041 %       zerosp (1 for windows where spikes in either channel were absent,zero otherwise)
0042 %       confC (confidence level for C at 1-p %) - only for err(1)>=1
0043 %       phierr (error bars for phi) - only for err(1)>=1
0044 %       Cerr  (Jackknife error bars for C - use only for Jackknife - err(1)=2)
0045 
0046 if nargin < 3; error('Need data1 and data2 and window parameters'); end;
0047 if nargin < 4; params=[]; end;
0048 [tapers,pad,Fs,fpass,err,trialave,params]=getparams(params);
0049 if nargin < 5 || isempty(fscorr); fscorr=0; end;
0050 
0051 if nargout > 8 && err(1)==0;
0052     error('When errors are desired, err(1) has to be non-zero.');
0053 end;
0054 if nargout > 10 && err(1)~=2; 
0055     error('Cerr computed only for Jackknife. Correct inputs and run again');
0056 end;
0057 [N1,C1,N2,C2]=check_consistency(data1,data2);
0058 N=N1;
0059 
0060 Nwin=round(Fs*movingwin(1)); % number of samples in window
0061 Nstep=round(movingwin(2)*Fs); % number of samples to step through
0062 nfft=2^(nextpow2(Nwin)+pad);
0063 [f,findx]=getfgrid(Fs,nfft,fpass); 
0064 params.tapers=dpsschk(tapers,Nwin,Fs); % check tapers
0065 
0066 winstart=1:Nstep:N1-Nwin+1;
0067 nw=length(winstart);
0068 for n=1:nw;
0069    indx=winstart(n):winstart(n)+Nwin-1;
0070    datawin1=data1(indx,:);datawin2=data2(indx,:);
0071    if nargout==11;
0072      [c,ph,s12,s1,s2,f,zsp,confc,phie,cerr]=coherencypb(datawin1,datawin2,params,fscorr);
0073      confC=confc;
0074      phierr(1,n,:,:)=squeeze(phie(1,:,:));
0075      phierr(2,n,:,:)=squeeze(phie(2,:,:));
0076      Cerr(1,n,:,:)=squeeze(cerr(1,:,:));
0077      Cerr(2,n,:,:)=squeeze(cerr(2,:,:));
0078    elseif nargout==10;
0079      [c,ph,s12,s1,s2,f,zsp,confc,phie]=coherencypb(datawin1,datawin2,params,fscorr);
0080      confC=confc;
0081      phierr(1,n,:,:)=squeeze(phie(1,:,:));
0082      phierr(2,n,:,:)=squeeze(phie(2,:,:));
0083    else
0084      [c,ph,s12,s1,s2,f,zsp]=coherencycpb(datawin1,datawin2,params,fscorr);
0085    end;
0086    C(n,:,:)=c;
0087    phi(n,:,:)=ph;
0088    S12(n,:,:)=s12;
0089    S1(n,:,:)=s1;
0090    S2(n,:,:)=s2;
0091    zerosp(n,:)=zsp;
0092 end;
0093 C=squeeze(C); phi=squeeze(phi);S12=squeeze(S12); S1=squeeze(S1); S2=squeeze(S2);zerosp=squeeze(zerosp);
0094 if nargout==11;Cerr=squeeze(Cerr);end;
0095 if nargout==10; phierr=squeeze(phierr);end
0096 winmid=winstart+round(Nwin/2);
0097 t=winmid/Fs;

Generated on Tue 16-Aug-2005 21:33:45 by m2html © 2003