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