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
0027
0028
0029 if trialave;
0030 dim=K*Ch;
0031 dof=2*dim;
0032 dof1=dof;
0033 dof2=dof;
0034 Ch=1;
0035 if nargin>=6 & ~isempty(numsp1)
0036 totspikes1=sum(numsp1);
0037 dof1=fix(2*totspikes1*dof/(2*totspikes1+dof));
0038 end
0039 if nargin==7 & ~isempty(numsp2);
0040 totspikes2=sum(numsp2);
0041 dof2=fix(2*totspikes2*dof/(2*totspikes2+dof));
0042 end;
0043 dof=min(dof1,dof2);
0044 J1=reshape(J1,nf,dim);
0045 J2=reshape(J2,nf,dim);
0046 else;
0047 dim=K;
0048 dof=2*dim;
0049 dof1=dof;
0050 dof2=dof;
0051 for ch=1:Ch;
0052 if nargin>=6 & ~isempty(numsp1);
0053 totspikes1=numsp1(ch);
0054 dof1=fix(2*totspikes1*dof/(2*totspikes1+dof));
0055 end;
0056 if nargin==7 & ~isempty(numsp2);
0057 totspikes2=numsp2(ch);
0058 dof2=fix(2*totspikes2*dof/(2*totspikes2+dof));
0059 end;
0060 dof(ch)=min(dof1,dof2);
0061 end;
0062 end;
0063
0064
0065
0066 if isempty(find((C-1).^2 < 10^-5));
0067 phierr = sqrt((2./dof(ones(nf,1),:)).*(1./(C.^2) - 1));
0068 else
0069 phierr = zeros(nf,Ch);
0070 end
0071
0072
0073
0074 if dof <= 2
0075 confC = 1;
0076 else
0077 df = 1./((dof/2)-1);
0078 confC = sqrt(1 - p.^df);
0079 end;
0080 if errchk==2;
0081 tcrit=tinv(pp,dof-1);
0082 for k=1:dim;
0083 indxk=setdiff(1:dim,k);
0084 J1jk=J1(:,indxk,:);
0085 J2jk=J2(:,indxk,:);
0086 eJ1jk=squeeze(sum(J1jk.*conj(J1jk),2));
0087 eJ2jk=squeeze(sum(J2jk.*conj(J2jk),2));
0088 eJ12jk=squeeze(sum(conj(J1jk).*J2jk,2));
0089 atanhCxyjk(k,:,:)=sqrt(2*dim-2)*atanh(abs(eJ12jk)./sqrt(eJ1jk.*eJ2jk));
0090 end;
0091 atanhC=sqrt(2*dim-2)*atanh(C);
0092 sigma12=sqrt(dim-1)*squeeze(std(atanhCxyjk,1,1));
0093 if Ch==1; sigma12=sigma12'; end;
0094 Cu=atanhC+tcrit(ones(nf,1),:).*sigma12;
0095 Cl=atanhC-tcrit(ones(nf,1),:).*sigma12;
0096 Cerr(1,:,:) = tanh(Cl/sqrt(2*dim-2));
0097 Cerr(2,:,:) = tanh(Cu/sqrt(2*dim-2));
0098 end;