gusucode.com > 《模式识别与智能计算》matlab源代码 > 《模式识别与智能计算》matlab源代码/《模式识别与智能计算》部分函数的源程序/书程序/第2章/clus_perceptron.m

    function y=clus_perceptron(varargin)  
r1=length(varargin)-1;   
test=[varargin{end} ones(size(varargin{end},1),1)];   
c=size(varargin{1},2);  
for i=1:r1
   r(i)=size(varargin{i},1);
   varargin{i}=[varargin{i} ones(r(i),1)];
end
w=zeros(c+1,r1);k1=0;num=0;
while  k1<sum(r)&&num<1000
  num=num+1;
  for i=1:r1
    for j=1:r(i)
      d=w'*varargin{i}(j,:)';  
      [a,b]=max(d);
      if length(find(a==d))>1   
          for k=1:r1
            if k==i
                 w(:,k)=w(:,k)+varargin{i}(j,:)';  
            else 
                w(:,k)=w(:,k)-varargin{i}(j,:)';
            end
          end
          k1=0;
      elseif b~=i
           for k=1:r1
            if k==i
               w(:,k)=w(:,k)+varargin{i}(j,:)';
            else 
               w(:,k)=w(:,k)-varargin{i}(j,:)';
            end
          end
           k1=0;
      else
          k1=k1+1;                 
      end
    end
  end 
end

for i=1:size(test,1)
   d=w'*test(i,:)';
   [a,y(i)]=max(d);
end