Home > chronux_1_0 > 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 and trials where spikes were absent (in either channel),zero otherwise)
       confC (confidence level for C at 1-p %) - only for err(1)>=1
       phierr - standard deviation for phi (note that the routine gives phierr as phierr(1,...) and phierr(2,...) 
                in order to incorporate Jackknife (eventually). Currently phierr(1,...)=phierr(2,...). Note that 
                phi + 2 phierr(1,...) and phi -2 phierr(2,...) 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,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 and trials where spikes were absent (in either channel),zero otherwise)
0042 %       confC (confidence level for C at 1-p %) - only for err(1)>=1
0043 %       phierr - standard deviation for phi (note that the routine gives phierr as phierr(1,...) and phierr(2,...)
0044 %                in order to incorporate Jackknife (eventually). Currently phierr(1,...)=phierr(2,...). Note that
0045 %                phi + 2 phierr(1,...) and phi -2 phierr(2,...) will give 95% confidence bands for phi - only for err(1)>=1
0046 %       Cerr  (Jackknife error bars for C - use only for Jackknife - err(1)=2)
0047 
0048 if nargin < 3; error('Need data1 and data2 and window parameters'); end;
0049 if nargin < 4; params=[]; end;
0050 [tapers,pad,Fs,fpass,err,trialave,params]=getparams(params);
0051 if nargin < 5 || isempty(fscorr); fscorr=0; end;
0052 
0053 if nargout > 8 && err(1)==0;
0054     error('When errors are desired, err(1) has to be non-zero.');
0055 end;
0056 if nargout > 10 && err(1)~=2; 
0057     error('Cerr computed only for Jackknife. Correct inputs and run again');
0058 end;
0059 [N,Ch]=check_consistency(data1,data2);
0060 
0061 Nwin=round(Fs*movingwin(1)); % number of samples in window
0062 Nstep=round(movingwin(2)*Fs); % number of samples to step through
0063 nfft=2^(nextpow2(Nwin)+pad);
0064 f=getfgrid(Fs,nfft,fpass); 
0065 Nf=length(f);
0066 params.tapers=dpsschk(tapers,Nwin,Fs); % check tapers
0067 
0068 winstart=1:Nstep:N-Nwin+1;
0069 nw=length(winstart);
0070 if trialave;
0071    C=zeros(nw,Nf);
0072    S12=zeros(nw,Nf);
0073    S1=zeros(nw,Nf);
0074    S2=zeros(nw,Nf);
0075    phi=zeros(nw,Nf);
0076    Cerr=zeros(2,nw,Nf);
0077    phierr=zeros(2,nw,Nf);
0078 else;
0079    C=zeros(nw,Nf,Ch);
0080    S12=zeros(nw,Nf,Ch);
0081    S1=zeros(nw,Nf,Ch);
0082    S2=zeros(nw,Nf,Ch);
0083    phi=zeros(nw,Nf,Ch);
0084    Cerr=zeros(2,nw,Nf,Ch);
0085    phierr=zeros(2,nw,Nf,Ch);
0086 end;
0087 zerosp=zeros(nw,Ch);
0088 
0089 for n=1:nw;
0090    indx=winstart(n):winstart(n)+Nwin-1;
0091    datawin1=data1(indx,:);datawin2=data2(indx,:);
0092    if nargout==11;
0093      [c,ph,s12,s1,s2,f,zsp,confc,phie,cerr]=coherencypb(datawin1,datawin2,params,fscorr);
0094      phierr(1,n,:,:)=squeeze(phie(1,:,:));
0095      phierr(2,n,:,:)=squeeze(phie(2,:,:));
0096      Cerr(1,n,:,:)=squeeze(cerr(1,:,:));
0097      Cerr(2,n,:,:)=squeeze(cerr(2,:,:));
0098    elseif nargout==10;
0099      [c,ph,s12,s1,s2,f,zsp,confc,phie]=coherencypb(datawin1,datawin2,params,fscorr);
0100      phierr(1,n,:,:)=squeeze(phie(1,:,:));
0101      phierr(2,n,:,:)=squeeze(phie(2,:,:));
0102    else
0103      [c,ph,s12,s1,s2,f,zsp]=coherencycpb(datawin1,datawin2,params,fscorr);
0104    end;
0105    C(n,:,:)=c;
0106    phi(n,:,:)=ph;
0107    S12(n,:,:)=s12;
0108    S1(n,:,:)=s1;
0109    S2(n,:,:)=s2;
0110    zerosp(n,:)=zsp;
0111 end;
0112 C=squeeze(C); phi=squeeze(phi);S12=squeeze(S12); S1=squeeze(S1); S2=squeeze(S2);zerosp=squeeze(zerosp);
0113 if nargout > 9; confC=confc; end;
0114 if nargout==11;Cerr=squeeze(Cerr);end;
0115 if nargout==10; phierr=squeeze(phierr);end
0116 winmid=winstart+round(Nwin/2);
0117 t=winmid/Fs;

Generated on Fri 09-Jun-2006 23:38:05 by m2html © 2003