function Bayes2%算法视线见《模式识别》P33-P44( 各类样本的协方差不相等) %为了提高实验样本测试的精度, 故采纳多次模拟求平均值的方法N=input('实验模拟次数 N(N 最好为奇数)= ');Result(1:3,1:3)=0; %判别矩阵的初始化for k=1:N %控制程序模拟次数 N %生成二维正态分布的样本 2 X N 维的矩阵 X1=mvnrnd([1 2],[4 0;0 6],300)'; %2 X N X2=mvnrnd([5 3],[5 0;0 1],200)'; X3=mvnrnd([4 7],[2 0;0 9],500)'; %样本程序 %---------------------------------------------------% %测试样本 X10=mvnrnd([1 2],[4 0;0 6],100)'; %2 X N X20=mvnrnd([5 3],[5 0;0 1],100)'; X30=mvnrnd([4 7],[2 0;0 9],100)'; %先验概率 P(1)=length(X1)/(length(X1)+length(X2)+length(X3)); P(2)=length(X2)/(length(X1)+length(X2)+length(X3)); P(3)=length(X3)/(length(X1)+length(X2)+length(X3)); %计算相关量 cov(X): 协方差矩阵 Ave:均值 %--------------------------------------------------------% W1=-1/2*inv(cov(X1')); W2=-1/2*inv(cov(X2')); W3=-1/2*inv(cov(X3'));% Ave1=(sum(X1')/length(X1))';Ave2=(sum(X2')/length(X2))'; Ave3=(sum(X3')/length(X3))';%计算平均值(2 维列向量) w1=inv(cov(X1'))*Ave1;w2=inv(cov(X2'))*Ave2;w3=inv(cov(X3'))*Ave3;%2 w10=-1/2*Ave1'*inv(cov(X1'))*Ave1-1/2*log(det(cov(X1')))+log(P(1)); w20=-1/2*Ave2'*inv(cov(X2'))*Ave2-1/2*log(det(cov(X2')))+log(P(2)); w30=-1/2*Ave3'*inv(cov(X3'))*Ave3-1/2*log(det(cov(X3')))+log(P(3)); %-----------------------------------------------------------% for i=1:3 for j=1:100 if i==1 g1=X10(:,j)'*W1*X10(:,j)+w1'*X10(:,j)+w10; g2=X10(:,j)'*W2*X10(:,j)+w2'*X10(:,j)+w20; g3=X10(:,j)'*W3*X10(:,j)+w3'*X10(:,j)+w30; if g1>=g2&g1>=g3 Result(1,1)=Result(1,1)+1; elseif g2>=g1&g2>=g3 Result(1,2)=Result(1,2)+1;%记录误判情况 else Result(1,3)=Result(1,3)+1;%记录误判情况 end elseif i==2 g1=X20(:,j)'*W1*X20(:,j)+w1'*X20(:,j)+w10; g2=X20(:,j)'*W2*X20(:,j)+w2'*X20(:,j)+w20; g3=X20(:,j)'*W3*X20(:,j)+w3'*X20(:,j)+w30; if g2>=g1&g2>=g3 Result(2,2)=Result(2,2)+1; elseif g1>=g2&g1>=g3 Result(2,1)=Result(2,1)+1; else R...