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