📄 sgnt_generating_online.asv
字号:
function [Node] = sgnt_generating_online(y1,m)
% Generating A Self-Generating Neural Tree for traning a SGNN
% Copyright By Li Aiguo in 22/11/2004
%Input: y1: training set
% m: input vector dimision
%Ouput: node: a SGNT
% node(j): (wj1,...,wjm);cj; Father_ptr; FirstChild_ptr; NextSibling_ptr
%*****************************************************************************
% [nr,nc]= size(y1);
% if nr< nc y1=y1'; end
%**************************************************************
% Generating a SGNT named node
%**************************************************************
% generating a root of the tree
for k=1:1:m node(1,k)= y1(1,k); end
node(1,m+1)= 1;
node(1,m+2)= 0;
node(1,m+3)= 0;
node(1,m+4)= 0;
%****************************************************
% Generating the tree
[nr,nc]= size(y1);
j= 2;
for i=2:1:nr
% choose(i,node)
[noder,nodec]= size(node);
for h=1:1:noder
for k=1:1:m w(k)= node(h,k); end
d1(h,2)=h;
% d1(h,1)=sqrt((y1(i,:)-w)*(y1(i,:)-w)');
d1(h,1)=sum((y1(i,:)-w).^2);
end
d1= paixu(d1,1);
winner= d1(1,2);
%*************************************************
if node(winner,m+3)== 0 % winner is a leaf
% copy(n_j,n_win); and % connect(n_j,n_win);
node(j,:)= node(winner,:);
node(j,m+1)= 1;
node(j,m+2)= winner;
node(j,m+3)= 0;
node(j,m+4)= 0;
node(winner,m+3)= j;
j= j+1;
end
% copy(n_j,e_i);
for k=1:1:m node(j,k)= y1(i,k); end
node(j,m+1)= 1;
node(j,m+2)= winner;
node(j,m+3)= 0;
node(j,m+4)= 0;
% connect(n_j,n_win);
node(winner,m+1)= node(winner,m+1)+1;
xx= node(winner,m+3);
while(xx >0)
if node(xx,m+4)==0 node(xx,m+4)=j; break; end
xx= node(xx,m+4);
end
j=j+1;
% update(e_i,n_win)
for k=1:1:m
node(winner,k)= node(winner,k)+(y1(i,k)-node(winner,k))/node(winner,m+1);
end
while(winner > 1)
winner= node(winner,m+2);
node(winner,m+1)= node(winner,m+1)+1;
for k=1:1:m
node(winner,k)= node(winner,k)+(y1(i,k)-node(winner,k))/node(winner,m+1);
end
end
end
Node = node;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -