📄 trainfam.m
字号:
function map=trainfam(TNP,rho_init,alpha)F1=4;F2max=10000;F2b=2;CAT=0;epsilon=0.01;rho_ab=0.8;wij = ones(1,F1);wjk = ones(1,F2b);wijold=1;wjkold=1;spiral=spitrain;strain=size(spiral);ntrain=strain(1);niter=1while 1>0, for nt=1:ntrain; a(1)=spiral(nt,1); a(2)=1-a(1); a(3)=spiral(nt,2); a(4)=1-a(3); b(1)=spiral(nt,3); b(2)=1-b(1); rhoa = rho_init; for j=1:CAT+1 T(j) = norm(min(a,wij(j,:)),1)/(alpha+norm(wij(j,:),1)); end while 1>0, while 1>0, [Tmax,Jmax]=max(T); if norm(min(a,wij(Jmax,:)),1) >= rhoa*norm(a,1) break; end T(Jmax)=0; end if norm(min(b,wjk(Jmax,:)),1) >= rho_ab break; end rhoa = norm(min(a,wij(Jmax,:)),1)/(F1/2)+epsilon; T(Jmax)=0; end wij(Jmax,:)=min(a,wij(Jmax,:)); wjk(Jmax,:)=min(b,wjk(Jmax,:)); if Jmax==CAT+1 CAT=CAT+1; wij = aug(wij,1); wjk = aug(wjk,1); end rhoa=rho_init; end if size(wij)==size(wijold) if wij == wijold if size(wjk)==size(wjkold) if wjk == wjkold break; end end endendwijold=wij;wjkold=wjk;ss=sprintf('niter=%d CAT=%d',niter,CAT)niter = niter+1;endwijwjkCAT,niterfor jy=1:TNP+1 for ix=1:TNP+1 a(1)=(ix-0.5)/TNP; a(2)=1-a(1); a(3)=(jy-0.5)/TNP; a(4)=1-a(3); for j=1:CAT T(j) = norm(min(a,wij(j,:)),1)/(alpha+norm(wij(j,:),1)); end T(CAT+1)= -1; [Tmax,Jmax]=max(T); [bmax,Kmax]=max(wjk(Jmax,:)); if Kmax==2 map(jy,ix)=0; else map(jy,ix)=100; end endend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -