0001 function [confC,phierr,Cerr]=coherr(C,J1,J2,err,trialave,numsp1,numsp2)
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019 if nargin < 5; error('Need at least 5 input arguments'); end;
0020 if err(1)==0; error('Need err=[1 p] or [2 p] for error bar calculation'); end;
0021 if nargout==3 & err(1)==1; error('Cerr contains Jackknife errors: check input arguments'); end;
0022 [nf,K,Ch]=size(J1);
0023 errchk=err(1);
0024 p=err(2);
0025 pp=1-p/2;
0026 qq=1-p;
0027
0028
0029
0030 if trialave;
0031 dim=K*Ch;
0032 dof=dim;
0033 dof1=dof;
0034 dof2=dof;
0035 Ch=1;
0036 if nargin>=6 & ~isempty(numsp1)
0037 totspikes1=sum(numsp1);
0038 dof1=fix(2*totspikes1*dof/(2*totspikes1+dof));
0039 end
0040 if nargin==7 & ~isempty(numsp2);
0041 totspikes2=sum(numsp2);
0042 dof2=fix(2*totspikes2*dof/(2*totspikes2+dof));
0043 end;
0044 dof=min(dof1,dof2);
0045 J1=reshape(J1,nf,dim);
0046 J2=reshape(J2,nf,dim);
0047 else;
0048 dim=K;
0049 dof=dim;
0050 dof1=dof;
0051 dof2=dof;
0052 for ch=1:Ch;
0053 if nargin>=6 & ~isempty(numsp1);
0054 totspikes1=numsp1(ch);
0055 dof1=fix(2*totspikes1*dof/(2*totspikes1+dof));
0056 end;
0057 if nargin==7 & ~isempty(numsp2);
0058 totspikes2=numsp2(ch);
0059 dof2=fix(2*totspikes2*dof/(2*totspikes2+dof));
0060 end;
0061 dof(ch)=min(dof1,dof2);
0062 end;
0063 end;
0064
0065
0066
0067 if isempty(find((C-1).^2 < 10^-5));
0068 phierr = sqrt((2./dof(ones(nf,1),:)).*(1./(C.^2) - 1));
0069 else
0070 phierr = zeros(nf,Ch);
0071 end
0072
0073
0074
0075 if dof <= 2
0076 confC = 1;
0077 else
0078 df = 1./((dof/2)-1);
0079 confC = sqrt(1 - p.^df);
0080 end;
0081 if errchk==2;
0082 tcrit=tinv(pp,dof-1);
0083 for k=1:dim;
0084 indxk=setdiff([1:dim],k);
0085 J1jk=J1(:,indxk,:);
0086 J2jk=J2(:,indxk,:);
0087 eJ1jk=squeeze(sum(J1jk.*conj(J1jk),2));
0088 eJ2jk=squeeze(sum(J2jk.*conj(J2jk),2));
0089 eJ12jk=squeeze(sum(conj(J1jk).*J2jk,2));
0090 atanhCxyjk(k,:,:)=sqrt(2*dim-2)*atanh(abs(eJ12jk)./sqrt(eJ1jk.*eJ2jk));
0091 end;
0092 atanhC=sqrt(2*dim-2)*atanh(C);
0093 sigma12=sqrt(dim-1)*squeeze(std(atanhCxyjk,1,1));
0094 if Ch==1; sigma12=sigma12'; end;
0095 Cu=atanhC+tcrit(ones(nf,1),:).*sigma12;
0096 Cl=atanhC-tcrit(ones(nf,1),:).*sigma12;
0097 Cerr(1,:,:) = tanh(Cl/sqrt(2*dim-2));
0098 Cerr(2,:,:) = tanh(Cu/sqrt(2*dim-2));
0099 end;