⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sgnt_generating_online.m

📁 用matlab编写的基于自生成神经网络(self-generated neural network)的预测方法(包含数据集)
💻 M
字号:
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 + -