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

    function result=bayes(varargin)  
type=varargin{end};     
r1=length(varargin)-2;   
loss=ones(r1)-diag(diag(ones(r1)));   
test=varargin{end-1};
x=[];
for i=1:r1
   x=[x;varargin{i}];
   r(i)=size(varargin{i},1);
end
[y1,y2]=mypcacov(x,test);
for k=1:size(test,1)
  temp=0;  
  for i=1:r1
   y=y1(temp+1:temp+r(i),:); 
   temp=temp+r(i);
   y_cov=cov(y);
   y_inv=inv(y_cov);
   y_det=det(y_cov);
    if r(i)==1
       y_mean=y;
    else
       y_mean=mean(y);
    end
    p=r(i)/sum(r);
    h(i)=-(y2(k,:)-y_mean)'*y_inv*(y2(k,:)-y_mean)/2+log(p)-log(abs(y_det))/2;
  end
  switch type
    case 1
        [a,result(k)]=max(h);
    case 2
        for j=1:r1
            risk(j)=loss(j,:)*h';
        end
        [a,result(k)]=min(risk);
  end
end