📄 findclassifier2.m
字号:
SNR = 2*s./(s0+s1); % this is SNR+1
CC.MD3.I1(:,k) = log2(SNR)/2;
jkd = squeeze(JKD(:,k,:));
o = bci3eval(jkd(:,cl~=k),jkd(:,cl==k),2);
CC.MD2.TSD{k} = o;
CC.MD2.I0(:,k) = log2(2*var(jkd,[],2)./(var(jkd(:,cl==k),[],2) + var(jkd(:,cl~=k),[],2)))/2;
[sum0,n0,ssq0]=sumskipnan(jkd(:,cl==k),2);
[sum1,n1,ssq1]=sumskipnan(jkd(:,cl~=k),2);
s0 = (ssq0-sum0.*sum0./n0)./(n0-1);
s1 = (ssq1-sum1.*sum1./n1)./(n1-1);
s = (ssq0+ssq1-(sum0+sum1).*(sum0+sum1)./(n0+n1))./(n0+n1-1);
SNR = 2*s./(s0+s1); % this is SNR+1
CC.MD2.I1(:,k) = log2(SNR)/2;
jkd = squeeze(JKD(:,k,:).^2);
o = bci3eval(jkd(:,cl~=k),jkd(:,cl==k),2);
CC.MDA.TSD{k} = o;
CC.MDA.I0(:,k) = log2(2*var(jkd,[],2)./(var(jkd(:,cl==k),[],2) + var(jkd(:,cl~=k),[],2)))/2;
[sum0,n0,ssq0]=sumskipnan(jkd(:,cl==k),2);
[sum1,n1,ssq1]=sumskipnan(jkd(:,cl~=k),2);
s0 = (ssq0-sum0.*sum0./n0)./(n0-1);
s1 = (ssq1-sum1.*sum1./n1)./(n1-1);
s = (ssq0+ssq1-(sum0+sum1).*(sum0+sum1)./(n0+n1))./(n0+n1-1);
SNR = 2*s./(s0+s1); % this is SNR+1
CC.MDA.I1(:,k) = log2(SNR)/2;
jkd = exp(-squeeze(JKD(:,k,:))/2);
o = bci3eval(jkd(:,cl~=k),jkd(:,cl==k),2);
CC.GRB.TSD{k} = o;
CC.GRB.I0(:,k) = log2(2*var(jkd,[],2)./(var(jkd(:,cl==k),[],2) + var(jkd(:,cl~=k),[],2)))/2;
[sum0,n0,ssq0]=sumskipnan(jkd(:,cl==k),2);
[sum1,n1,ssq1]=sumskipnan(jkd(:,cl~=k),2);
s0 = (ssq0-sum0.*sum0./n0)./(n0-1);
s1 = (ssq1-sum1.*sum1./n1)./(n1-1);
s = (ssq0+ssq1-(sum0+sum1).*(sum0+sum1)./(n0+n1))./(n0+n1-1);
SNR = 2*s./(s0+s1); % this is SNR+1
CC.GRB.I1(:,k) = log2(SNR)/2;
jkd = exp(-squeeze(JKLL(:,k,:))/2);
o = bci3eval(jkd(:,cl~=k),jkd(:,cl==k),2);
CC.LLH.TSD{k} = o;
CC.LLH.I0(:,k) = log2(2*var(jkd,[],2)./(var(jkd(:,cl==k),[],2) + var(jkd(:,cl~=k),[],2)))/2;
[sum0,n0,ssq0]=sumskipnan(jkd(:,cl==k),2);
[sum1,n1,ssq1]=sumskipnan(jkd(:,cl~=k),2);
s0 = (ssq0-sum0.*sum0./n0)./(n0-1);
s1 = (ssq1-sum1.*sum1./n1)./(n1-1);
s = (ssq0+ssq1-(sum0+sum1).*(sum0+sum1)./(n0+n1))./(n0+n1-1);
SNR = 2*s./(s0+s1); % this is SNR+1
CC.LLH.I1(:,k) = log2(SNR)/2;
for l = 1:length(CL),
tmp(:,l) = sum(MDIX(:,cl==CL(k))==CL(l),2);
if CL(k) == CL(l),
acc = tmp(:,l);
end;
end;
CC.MDA.mmx(:,(1-length(CL):0)+k*length(CL)) = tmp;
CC.MDA.acc(:,k) = acc./sum(tmp,2);
for l = 1:length(CL),
tmp(:,l) = sum(GDIX(:,cl==CL(k))==CL(l),2);
if CL(k) == CL(l),
acc = tmp(:,l);
end;
end;
CC.MD3.mmx(:,(1-length(CL):0)+k*length(CL)) = tmp;
CC.MD3.acc(:,k) = acc./sum(tmp,2);
for l = 1:length(CL),
tmp(:,l) = sum(LLIX(:,cl==CL(k))==CL(l),2);
if CL(k) == CL(l),
acc = tmp(:,l);
end;
end;
CC.LLH.mmx(:,(1-length(CL):0)+k*length(CL)) = tmp;
CC.LLH.acc(:,k) = acc./sum(tmp,2);
end;
CC.MDA.I = sum(CC.MDA.I0,2);
CC.MD2.I = sum(CC.MD2.I0,2);
CC.MD3.I = sum(CC.MD3.I0,2);
CC.GRB.I = sum(CC.GRB.I0,2);
CC.LLH.I = sum(CC.LLH.I0,2);
CC.MDA.CMX00 = reshape(sum(CC.MDA.mmx(T(CC.TI,:),:),1),[1,1]*length(CL))/size(T,2);
CC.MDA.ACC00 = sum(CC.MDA.mmx(:,1:length(CL)+1:end),2)/sum(~isnan(cl));
CC.MDA.KAP00 = zeros(size(MDIX,1),1);
CC.MD3.CMX00 = reshape(sum(CC.MD3.mmx(T(CC.TI,:),:),1),[1,1]*length(CL))/size(T,2);
CC.MD3.ACC00 = sum(CC.MD3.mmx(:,1:length(CL)+1:end),2)/sum(~isnan(cl));
CC.MD3.KAP00 = zeros(size(GDIX,1),1);
CC.LLH.CMX00 = reshape(sum(CC.LLH.mmx(T(CC.TI,:),:),1),[1,1]*length(CL))/size(T,2);
CC.LLH.ACC00 = sum(CC.LLH.mmx(:,1:length(CL)+1:end),2)/sum(~isnan(cl));
CC.LLH.KAP00 = zeros(size(LLIX,1),1);
for k = 1:size(MDIX,1),
CC.MDA.KAP00(k) = kappa(reshape(CC.MDA.mmx(k,:),[1,1]*length(CL)));
CC.MD3.KAP00(k) = kappa(reshape(CC.MD3.mmx(k,:),[1,1]*length(CL)));
CC.LLH.KAP00(k) = kappa(reshape(CC.LLH.mmx(k,:),[1,1]*length(CL)));
end;
if length(CL) > 2,
return;
end;
if bitand(SWITCH,1),
CC.LLH.ERR00 = (mean(sign(JKLL),2)+1)/2;
CC.LDA.ERR00 = (mean(sign(JKLD),2)+1)/2;
CC.MD3.ERR00 = (mean(sign(JKGD),2)+1)/2;
CC.MDA.ERR00 = (mean(sign(JKD1-JKD2),2)+1)/2;
CC.GRB.ERR00 = (mean(sign(exp(-JKD2/2)-exp(-JKD1/2)),2)+1)/2;
end;
d=JKLD;
tmp1 = d(1-min(T(:))+T(CC.TI,:),cl==CL(1));
[sum0,n0,ssq0] = sumskipnan(tmp1(:));
tmp2 = d(1-min(T(:))+T(CC.TI,:),cl==CL(2));
[sum1,n1,ssq1] = sumskipnan(tmp2(:));
CC.LDA.AUC = auc(tmp1,tmp2);
CC.LDA.ERR(1,1) = mean(sign([tmp1(:)]))/2+1/2;
CC.LDA.ERR(1,2) = mean(sign([tmp2(:)]))/2+1/2;
CC.LDA.ERR(2,1) = mean(sign([mean(tmp1,1)']))/2+1/2;
CC.LDA.ERR(2,2) = mean(sign([mean(tmp2,1)']))/2+1/2;
s0 = (ssq0-sum0.*sum0./n0)./(n0-1);
s1 = (ssq1-sum1.*sum1./n1)./(n1-1);
s = (ssq0+ssq1-(sum0+sum1).*(sum0+sum1)./(n0+n1))./(n0+n1-1);
SNR = 2*s./(s0+s1); % this is SNR+1
CC.LDA.I = log2(SNR)/2;
CC.LDA.SNR = SNR - 1;
if 0,
clear tmp1 tmp2;
tmp1 = stat2(d(:,cl==CL(1)),2);
tmp2 = stat2(d(:,cl==CL(2)),2);
CC.LDA.TSD=stat2res(tmp1,tmp2);
CC.LDA.TSD.ERR=1/2-mean(sign([-d(:,cl==CL(1)),d(:,cl==CL(2))]),2)/2;
elseif bitand(SWITCH,1),
CC.LDA.TSD=bci3eval(d(:,cl==CL(1)),d(:,cl==CL(2)),2);
end;
d = JKD1 - JKD2;
tmp1 = d(1-min(T(:))+T(CC.TI,:),cl==CL(1));
[sum0,n0,ssq0] = sumskipnan(tmp1(:));
tmp2 = d(1-min(T(:))+T(CC.TI,:),cl==CL(2));
[sum1,n1,ssq1] = sumskipnan(tmp2(:));
CC.MDA.AUC = auc(tmp1,tmp2);
CC.MDA.ERR(1,1) = mean(sign([tmp1(:)]))/2+1/2;
CC.MDA.ERR(1,2) = mean(sign([tmp2(:)]))/2+1/2;
CC.MDA.ERR(2,1) = mean(sign([mean(tmp1,1)']))/2+1/2;
CC.MDA.ERR(2,2) = mean(sign([mean(tmp2,1)']))/2+1/2;
s0 = (ssq0-sum0.*sum0./n0)./(n0-1);
s1 = (ssq1-sum1.*sum1./n1)./(n1-1);
s = (ssq0+ssq1-(sum0+sum1).*(sum0+sum1)./(n0+n1))./(n0+n1-1);
SNR = 2*s./(s0+s1); % this is SNR+1
CC.MDA.I = log2(SNR)/2;
CC.MDA.SNR = SNR - 1;
if 0,
clear tmp1 tmp2;
tmp1 = stat2(d(:,cl==CL(1)),2);
tmp2 = stat2(d(:,cl==CL(2)),2);
CC.MDA.TSD=stat2res(tmp1,tmp2);
CC.MDA.TSD.ERR=1/2-mean(sign([-d(:,cl==CL(1)),d(:,cl==CL(2))]),2)/2;
elseif bitand(SWITCH,1),
CC.MDA.TSD=bci3eval(d(:,cl==CL(1)),d(:,cl==CL(2)),2);
end;
d = JKD6 - JKD5;
tmp1 = d(1-min(T(:))+T(CC.TI,:),cl==CL(1));
[sum0,n0,ssq0] = sumskipnan(tmp1(:));
tmp2 = d(1-min(T(:))+T(CC.TI,:),cl==CL(2));
[sum1,n1,ssq1] = sumskipnan(tmp2(:));
CC.MD3.AUC = auc(tmp1,tmp2);
CC.MD3.ERR(1,1) = mean(sign([tmp1(:)]))/2+1/2;
CC.MD3.ERR(1,2) = mean(sign([tmp2(:)]))/2+1/2;
CC.MD3.ERR(2,1) = mean(sign([mean(tmp1,1)']))/2+1/2;
CC.MD3.ERR(2,2) = mean(sign([mean(tmp2,1)']))/2+1/2;
s0 = (ssq0-sum0.*sum0./n0)./(n0-1);
s1 = (ssq1-sum1.*sum1./n1)./(n1-1);
s = (ssq0+ssq1-(sum0+sum1).*(sum0+sum1)./(n0+n1))./(n0+n1-1);
SNR = 2*s./(s0+s1); % this is SNR+1
CC.MD3.I = log2(SNR)/2;
CC.MD3.SNR = SNR - 1;
if 0,
clear tmp1 tmp2;
tmp1 = stat2(d(:,cl==CL(1)),2);
tmp2 = stat2(d(:,cl==CL(2)),2);
CC.MD3.TSD=stat2res(tmp1,tmp2);
CC.MD3.TSD.ERR=1/2-mean(sign([-d(:,cl==CL(1)),d(:,cl==CL(2))]),2)/2;
elseif bitand(SWITCH,1),
CC.MD3.TSD=bci3eval(d(:,cl==CL(1)),d(:,cl==CL(2)),2);
end;
d = sqrt(JKD1) - sqrt(JKD2);
tmp1 = d(1-min(T(:))+T(CC.TI,:),cl==CL(1));
[sum0,n0,ssq0] = sumskipnan(tmp1(:));
tmp2 = d(1-min(T(:))+T(CC.TI,:),cl==CL(2));
[sum1,n1,ssq1] = sumskipnan(tmp2(:));
CC.MD2.AUC = auc(tmp1,tmp2);
CC.MD2.ERR(1,1) = mean(sign([tmp1(:)]))/2+1/2;
CC.MD2.ERR(1,2) = mean(sign([tmp2(:)]))/2+1/2;
CC.MD2.ERR(2,1) = mean(sign([mean(tmp1,1)']))/2+1/2;
CC.MD2.ERR(2,2) = mean(sign([mean(tmp2,1)']))/2+1/2;
s0 = (ssq0-sum0.*sum0./n0)./(n0-1);
s1 = (ssq1-sum1.*sum1./n1)./(n1-1);
s = (ssq0+ssq1-(sum0+sum1).*(sum0+sum1)./(n0+n1))./(n0+n1-1);
SNR = 2*s./(s0+s1); % this is SNR+1
CC.MD2.I = log2(SNR)/2;
CC.MD2.SNR = SNR - 1;
if 0,
clear tmp1 tmp2;
tmp1 = stat2(d(:,cl==CL(1)),2);
tmp2 = stat2(d(:,cl==CL(2)),2);
CC.MD2.TSD=stat2res(tmp1,tmp2);
CC.MD2.TSD.ERR=1/2-mean(sign([-d(:,cl==CL(1)),d(:,cl==CL(2))]),2)/2;
elseif bitand(SWITCH,1),
CC.MD2.TSD=bci3eval(d(:,cl==CL(1)),d(:,cl==CL(2)),2);
end;
%%%
if any(isnan(cl)),
t = perm(TRIG(isnan(cl)),T(CC.TI,:));
t = t(t<=size(D,1));
tmp= rs(D(t(:),:),size(T,2),1);
[CC.OUT.LDA] = ldbc(CC.MD,tmp);
CC.OUT.LDAcl = CL((CC.OUT.LDA>0)+1);
[CC.OUT.MDA] = mdbc(CC.MD,tmp);
[tmp,ix] = min(CC.OUT.MDA,[],2);
tmp = isnan(tmp);
ix(tmp) = NaN; % invalid output, not classified
ix(~tmp) = CL(ix(~tmp));
CC.OUT.MDAcl = ix;
end;
return;
d = JKD3 - JKD4;
tmp1 = d(1-min(T(:))+T(CC.TI,:),cl==CL(1));
[sum0,n0,ssq0] = sumskipnan(tmp1(:));
tmp2 = d(1-min(T(:))+T(CC.TI,:),cl==CL(2));
[sum1,n1,ssq1] = sumskipnan(tmp2(:));
CC.MLL.AUC = auc(tmp1,tmp2);
CC.MLL.ERR(1,1) = mean(sign([tmp1(:)]))/2+1/2;
CC.MLL.ERR(1,2) = mean(sign([tmp2(:)]))/2+1/2;
CC.MLL.ERR(2,1) = mean(sign([mean(tmp1,1)']))/2+1/2;
CC.MLL.ERR(2,2) = mean(sign([mean(tmp2,1)']))/2+1/2;
s0 = (ssq0-sum0.*sum0./n0)./(n0-1);
s1 = (ssq1-sum1.*sum1./n1)./(n1-1);
s = (ssq0+ssq1-(sum0+sum1).*(sum0+sum1)./(n0+n1))./(n0+n1-1);
SNR = 2*s./(s0+s1); % this is SNR+1
CC.MLL.I = log2(SNR)/2;
CC.MLL.SNR = SNR - 1;
if 0,
clear tmp1 tmp2;
tmp1 = stat2(d(:,cl==CL(1)),2);
tmp2 = stat2(d(:,cl==CL(2)),2);
CC.MLL.TSD=stat2res(tmp1,tmp2);
CC.MLL.TSD.ERR=mean(sign([-d(:,cl==CL(1)),d(:,cl==CL(2))]),2)/2+1/2;
elseif bitand(SWITCH,1),
CC.MLL.TSD=bci3eval(d(:,cl==CL(1)),d(:,cl==CL(2)),2);
end;
d = exp(-JKD1/2)-exp(-JKD2/2);
tmp1 = d(1-min(T(:))+T(CC.TI,:),cl==CL(1));
[sum0,n0,ssq0] = sumskipnan(tmp1(:));
tmp2 = d(1-min(T(:))+T(CC.TI,:),cl==CL(2));
[sum1,n1,ssq1] = sumskipnan(tmp2(:));
CC.GRB.AUC = auc(tmp1,tmp2);
CC.GRB.ERR(1,1) = mean(sign([tmp1(:)]))/2+1/2;
CC.GRB.ERR(1,2) = mean(sign([tmp2(:)]))/2+1/2;
CC.GRB.ERR(2,1) = mean(sign([mean(tmp1,1)']))/2+1/2;
CC.GRB.ERR(2,2) = mean(sign([mean(tmp2,1)']))/2+1/2;
s0 = (ssq0-sum0.*sum0./n0)./(n0-1);
s1 = (ssq1-sum1.*sum1./n1)./(n1-1);
s = (ssq0+ssq1-(sum0+sum1).*(sum0+sum1)./(n0+n1))./(n0+n1-1);
SNR = 2*s./(s0+s1); % this is SNR+1
CC.GRB.I = log2(SNR)/2;
CC.GRB.SNR = SNR - 1;
if 0,
clear tmp1 tmp2;
tmp1 = stat2(d(:,cl==CL(1)),2);
tmp2 = stat2(d(:,cl==CL(2)),2);
CC.GRB.TSD=stat2res(tmp1,tmp2);
CC.GRB.TSD.ERR=1/2-mean(sign([-d(:,cl==CL(1)),d(:,cl==CL(2))]),2)/2;
elseif bitand(SWITCH,1),
CC.GRB.TSD=bci3eval(d(:,cl==CL(1)),d(:,cl==CL(2)),2);
end;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -