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

    function y=analogical(varargin) 
r=length(varargin)-2;
test=varargin{end-1};
r1=size(test,1);
type=varargin{end};
switch type
    case 'dis'  
      for i=1:r1
          for j=1:r
            d(i,j)=min(pattern_dis(test(i,:),varargin{j},'euclidean')); 
          end
            [a,y]=min(d,[],2);
      end 
    case 'pca'
      for i=1:r1
           for j=1:r
             [x1,x2]=mypcacov(varargin{j},test);
             d(i,j)=min(pattern_dis(x2(i,:),x1,'euclidean')); 
           end 
           [a,y]=min(d,[],2);
      end 
    case'cen'   
        for i=1:r1
          for j=1:r
            r2=size(varargin{j},1);
            if r2>1
              x=mean(varargin{j});
            else
              x=varargin{j};
            end
             d(i,j)=min(pattern_dis(test(i,:),x,'euclidean')); 
          end
            [a,y]=min(d,[],2);
        end     
    case'mah'   
       for i=1:r1
          for j=1:r
            r2=size(varargin{j},1);
            if r2>1
              x=mean(varargin{j});
            else
              x=varargin{j};
            end
             d(i,j)=min(pattern_dis(test(i,:),x,'euclidean')); 
          end
            [a,y]=min(d,[],2);
        end     
    case'cos'
       for i=1:r1
          for j=1:r
            d(i,j)=max(pattern_dis(test(i,:),varargin{j},'cosine')); 
          end
           [a,y]=min(d,[],2);
      end     
    case'ham'   
      for i=1:r1
          for j=1:r
           d(i,j)=min(pattern_dis(test(i,:),varargin{j},'hamming')); 
          end
          [a,y]=min(d,[],2);
       end    
end
y=y';