


Multi-taper time-frequency coherence - two binned point processes
process
Usage:
[C,phi,t,f,confC,phierr,Cerr]=cohgramcpb(data1,data2,movingwin,tapers,nfft,Fs,fpass,err,trialave)
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 channels/trials) -- required
data2 (binned point process data in form samples x channels/trials) -- required
movingwin (in the form [window winstep] -- required
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 (abs of coherency frequency index x channels/trials)
phi (phase of coherency frequency x channels/trials)
t (time)
f (frequencies)
confC (confidence level for c at 1-p %)
phierr (error bars for phi)
Cerr (Jackknife error bars for C - use only for Jackknife)

0001 function [C,phi,t,f,confC,phierr,Cerr]=cohgrampb(data1,data2,movingwin,tapers,pad,Fs,fpass,err,trialave,fscorr) 0002 % Multi-taper time-frequency coherence - two binned point processes 0003 % process 0004 % 0005 % Usage: 0006 % 0007 % [C,phi,t,f,confC,phierr,Cerr]=cohgramcpb(data1,data2,movingwin,tapers,nfft,Fs,fpass,err,trialave) 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 channels/trials) -- required 0013 % data2 (binned point process data in form samples x channels/trials) -- required 0014 % movingwin (in the form [window winstep] -- required 0015 % tapers (precalculated tapers from dpss, or in the form [NW K] e.g [3 5]) -- optional. If not 0016 % specified, use [NW K]=[3 5] 0017 % pad (padding factor for the FFT) - optional. Defaults to 0. 0018 % e.g. For N = 500, if PAD = 0, we pad the FFT 0019 % to 512 points; if PAD = 2, we pad the FFT 0020 % to 2048 points, etc. 0021 % Fs (sampling frequency) - optional. Default 1. 0022 % fpass (frequency band to be used in the calculation in the form 0023 % [fmin fmax])- optional. 0024 % Default all frequencies between 0 and Fs/2 0025 % err (error calculation [1 p] - Theoretical error bars; [2 p] - Jackknife error bars 0026 % [0 p] or 0 - no error bars) - optional. Default 0. 0027 % trialave (average over trials when 1, don't average when 0) - optional. Default 0 0028 % fscorr (finite size corrections, 0 (don't use finite size corrections) or 1 (use finite size corrections) - optional 0029 % (available only for spikes). Defaults 0. 0030 % Output: 0031 % C (abs of coherency frequency index x channels/trials) 0032 % phi (phase of coherency frequency x channels/trials) 0033 % t (time) 0034 % f (frequencies) 0035 % confC (confidence level for c at 1-p %) 0036 % phierr (error bars for phi) 0037 % Cerr (Jackknife error bars for C - use only for Jackknife) 0038 0039 if nargin < 3; error('Need data1 and data2 and window parameters'); end; 0040 [N1,C1]=size(data1);[N2,C2]=size(data2); 0041 if N1~=N2 | C1~=C2; error('data incompatible'); end; 0042 if nargin < 4; tapers=[3 5]; end; 0043 if nargin < 5;pad=0;end; 0044 if nargin < 6; Fs=1; end; 0045 if nargin < 7; fpass=[0 Fs/2]; end; 0046 if nargin < 8; err=0; end; 0047 if nargin < 9; trialave=0;end; 0048 if nargin < 10; fscorr=0;end; 0049 0050 if isempty(tapers); tapers=[3 5]; end; 0051 if isempty(pad);pad=0;end; 0052 if isempty(Fs); Fs=1; end; 0053 if isempty(fpass); fpass=[0 Fs/2]; end; 0054 if isempty(err); err=0; end; 0055 if isempty(trialave); trialave=0;end; 0056 if isempty(fscorr);fscorr=0;end; 0057 0058 if nargout > 6 & err(1)~=2; 0059 error('Cerr computed only for Jackknife. Correct inputs and run again'); 0060 end; 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,findx]=getfgrid(Fs,nfft,fpass); 0065 tapers=dpsschk(tapers,Nwin)/sqrt(Fs); % check tapers 0066 0067 winstart=[1:Nstep:N1-Nwin+1]; 0068 nw=length(winstart); 0069 for n=1:nw; 0070 indx=winstart(n):winstart(n)+Nwin-1; 0071 datawin1=data1(indx,:);datawin2=data2(indx,:); 0072 if nargout==7; 0073 [c,ph,f,confc,phie,cerr]=coherencypb(datawin1,datawin2,tapers,pad,Fs,fpass,err,trialave,fscorr); 0074 confC=confc; 0075 phierr(1,n,:,:)=squeeze(phie(1,:,:)); 0076 phierr(2,n,:,:)=squeeze(phie(2,:,:)); 0077 Cerr(1,n,:,:)=squeeze(cerr(1,:,:)); 0078 Cerr(2,n,:,:)=squeeze(cerr(2,:,:)); 0079 elseif nargout==6; 0080 [c,ph,f,confc,phie]=coherencypb(datawin1,datawin2,tapers,pad,Fs,fpass,err,trialave,fscorr); 0081 confC=confc; 0082 phierr(1,n,:,:)=squeeze(phie(1,:,:)); 0083 phierr(2,n,:,:)=squeeze(phie(2,:,:)); 0084 else 0085 [c,ph,f]=coherencycpb(datawin1,datawin2,tapers,pad,Fs,fpass,err,trialave,fscorr); 0086 end; 0087 C(n,:,:)=c; 0088 phi(n,:,:)=ph; 0089 end; 0090 C=squeeze(C); phi=squeeze(phi);if nargout==7;Cerr=squeeze(Cerr);end; 0091 if nargout==6; phierr=squeeze(phierr);end 0092 winmid=winstart+round(Nwin/2); 0093 t=winmid/Fs;