MATLAB中有一个命令: d= mahal(Y,X) 计算X矩阵每一个点(行)至Y矩阵中每一个点(行)的马氏距离。 其中: Y的列数必须等于X的列数,但它们的行数可以不同。X的行数必须大于列数。输出d: d是距离向量。
1.总体协方差矩阵相等
apf = [1.14,1.78;1.18,1.96;1.20,1.86;1.26,2.;1.28,2;1.30,1.96]; af = [1.24,1.72;1.36,1.74;1.38,1.64;1.38,1.82;1.38,1.90;1.40,1.70;1.48,1.82;1.54,1.82;1.56,2.08]; x = [1.24,1.8;1.28,1.84; 1.4,2.04]; %输入原始待判别数据 m1 = mean( apf ); m2 = mean( af ); % 计算样本均值 s1 = cov(apf); s2 = cov(af); % 协方差矩阵 %计算总体的协方差矩阵 s = ((length(apf)-1)*s1+(length(af)-1)*s2)/(length(af)+length(apf)-2); for i=1:length(x) %计算判别函数值 W(i)=(x(i,:)-1/2*(m1+m2))* inv(s)*(m1-m2)'; end disp(['判别函数值:',num2str(W)]) plot(apf(:,1),apf(:,2),'rh'); hold on plot(af(:,1),af(:,2),'bp'); plot(x(:,1),x(:,2),'ko','MarkerFaceColor','y'); apfm = mean(apf); plot( apfm (1), apfm(2),'r*','LineWidth',2); afm = mean(af); plot( afm (1), afm(2),'b*','LineWidth',2) legend('apf','af','待判断X','apf均值','af均值') legend('boxoff') title('判别分析 距离判别分析 测试案例 协方差矩阵相同的效果')
2.总体协方差矩阵不相等
apf = [1.14,1.78;1.18,1.96;1.20,1.86;1.26,2.;1.28,2;1.30,1.96]; af = [1.24,1.72;1.36,1.74;1.38,1.64;1.38,1.82;1.38,1.90;1.40,1.70;1.48,1.82;1.54,1.82;1.56,2.08]; x = [1.24,1.8;1.28,1.84; 1.4,2.04]; W = mahal(x,apf)-mahal(x,af) % 计算判别函数 plot(apf(:,1),apf(:,2),'rh'); hold on plot(af(:,1),af(:,2),'bp'); plot(x(:,1),x(:,2),'ko','MarkerFaceColor','y'); apfm = mean(apf); plot( apfm (1), apfm(2),'r*','LineWidth',2); afm = mean(af); plot( afm (1), afm(2),'b*','LineWidth',2) legend('apf','af','待判断X','apf均值','af均值') legend('boxoff') title('判别分析 距离判别分析 测试案例 协方差矩阵不同的效果')
p=2; alpha = 0.05; Q01 = (n1-1)*(log(det(s))-log(det(s1))-p+trace(inv(s)*s1)); Q02 = (n2-1)*(log(det(s))-log(det(s2))-p+trace(inv(s)*s2)); lamda = chi2inv(1-alpha,3); if Q01<lamda && Q02<lamda disp(' 两总体协方差矩阵相同) .') end
Copyright © 2023 leiyu.cn. All Rights Reserved. 磊宇云计算 版权所有 许可证编号:B1-20233142/B2-20230630 山东磊宇云计算有限公司 鲁ICP备2020045424号
磊宇云计算致力于以最 “绿色节能” 的方式,让每一位上云的客户成为全球绿色节能和降低碳排放的贡献者