MATLAB小技巧(18)矩阵分析--熵权法

MATLAB小技巧(18)矩阵分析--熵权法

前言

MATLAB进行图像处理相关的学习是非常友好的,可以从零开始,对基础的图像处理都已经有了封装好的许多可直接调用的函数,这个系列文章的话主要就是介绍一些大家在MATLAB中常用一些概念函数进行例程演示!

熵权法,物理学名词,按照信息论基本原理的解释,信息是系统有序程度的一个度量,熵是系统无序程度的一个度量;根据信息熵的定义,对于某项指标,可以用熵值来判断某个指标的离散程度,其信息熵值越小,指标的离散程度越大, 该指标对综合评价的影响(即权重)就越大,如果某项指标的值全部相等,则该指标在综合评价中不起作用。因此,可利用信息熵这个工具,计算出各个指标的权重,为多指标综合评价提供依据。

在信息论中,熵表示的是不确定性的量度。熵权法是一种客观赋权方法。它比较复杂,计算步骤如下:

第一步:构建各年份各评价指标的判断矩阵。

第二步:将判断矩阵进行归一化处理, 得到归一化判断矩阵。

第三步:根据熵的定义,根据各年份评价指标,可以确定评价指标的熵。

第四步:定义熵权。定义了第n个指标的熵后,可得到第n个指标的熵权。

第五步:计算系统的权重值。

搜寻资料的时候遇到的这个示例,这里分享给大家,MATLAB版本为MATLAB2015b。

一. MATLAB仿真

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%功能:矩阵分析--熵权法
%环境:Win7,Matlab2015b
%Modi: C.S
%时间:2022-06-25
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% 清空环境变量
clear all
clc

tic

data=[0.75	0.63	0.75	0.81	0.69	0.81	5	10	1.93548E+11	7240.681967	6.298785927	0.62 	192.4661076	4.686888049	2.0	3.400000095	0.115836213	96.97335856	15.38125957	101.7018861	6.499	4	6	6	7.6	6.6	23.1	31	4.8	2.431582014	9.5	-3.61798E-05	1	1
0.75	0.5	0.69	0.81	0.63	0.75	5	10.5	2.30814E+11	8486.599333	4.831769895	0.75 	176.6685921	3.280791297	5.4	3.5	0.116569495	97.55335372	16.85965181	103.3669954	4.808180972	4	6	5.7	7.6	6.5	18.9	20	4.8	2.186625121	9.5	4.54671E-05	1	1
0.75	0.5	0.69	0.81	0.63	0.75	5	10.5	2.02258E+11	7312.008314	-1.513685083	2.82 	162.5590474	0.056692279	0.6	5.199999809	0.133067151	94.79421005	15.72300017	99.20792011	3.626565493	4	6	5.6	7.8	6.4	15.6	18	4.7	2.018688231	9.5	0.004690208	1	1
0.75	0.5	0.69	0.81	0.63	0.75	5	10.5	2.55017E+11	9069.041757	7.425970496	3.14 	157.9448161	4.268585079	1.7	5.199999809	0.138986262	100	10.58680811	99.78332539	3.354026707	4	6	6	7.9	7.1	17.5	17	4.8	1.909757926	9.5	0.000150235	1	1
0.69	0.5	0.69	0.81	0.63	0.75	5	10.5	2.97952E+11	10427.75605	5.293784657	3.11 	154.9377943	5.07443252	3.2	5.300000191	0.140462949	100.3691636	11.24594845	100.661092	2.681390308	4	6	6	8	7.5	16.4	5	4.7	1.94	9.5	6.29193E-05	1	1
0.69	0.5	0.69	0.81	0.63	0.75	5	10.5	3.14443E+11	10834.65908	5.473454192	3.04 	147.841804	2.829059379	1.7	4.900000095	0.16529799	100.1058325	5.927298365	100.9644134	2.015843113	4	6	6	8	7.5	15.1	6	4.7	1.92	9.5	0.000223747	1	1
0.69	0.5	0.69	0.81	0.63	0.75	5	10.5	3.23343E+11	10973.65594	4.713453716	3.04 	142.691994	3.493591567	2.1	4.900000095	0.174524422	100.5891618	3.628205878	100.5497696	1.849146571	4	6	6	8	7.5	7.6	6	4.7	1.89	9.5	0.000545649	1	1
];
 
fzb=data(:,[1 2 3 7 8 12 15 16 17 21 22 23 27 28 30 31]);%取负指标
zzb=data(:,[4 5 6 9:11 13 14 18:20 24:26 29 32:34]);%取正指标
M=zzb;
x2=fzb;


N = (M - min(M(:)))/(max(M(:))-min(M(:)));%正指标归一化
N2 = ( max(x2(:))-x2)/(max(x2(:))-min(x2(:)));%负指标归一化
x=[N2(:,[1 2 3]),N(:,[1 2 3]),N2(:,[4 5]),N(:,4:6),N2(:,6),N(:,7:8),N2(:,[7 8 9]),N(:,9:11),N2(:,[10 11 12]),N(:,12:14),N2(:,[13 14]),N(:,15),N2(:,[15 16]),N(:,16:18)];
x1=x;
y=[];
[m,n]=size(x1);
for i=1:n
   y(:,i)=x1(:,i)/sum([x1(:,i)])   ;    % 矩阵标准化
end
    
    
for l=1:n
    s(1,l)=0;
    for j=1:m
       if y(j,l)==0;%%%%%%%%==”表示等于“=”是赋值
            p(1,l)=0;
            s(1,l)=s(1,l);
       else    
          p(1,l)=y(j,l)*log(y(j,l));
          s(1,l)=s(1,l)+p(1,l);
       end
    end
end
k=(log(m))^(-1);
e=-k*s;
h=ones(1,n)-e;
w=h/sum(h)          % 指标权重值

toc

二. 仿真结果

w =

  1130.0000    0.0000    0.0000    0.0000    0.0001    0.0001   -0.0000    0.0001    0.0307    0.0219    0.2730    0.0011    0.0078

  14260.1017    0.0021    0.0007    0.0000    0.0004    0.1246    0.0001    0.0026    0.0000   -0.0000    0.0004    0.0003    0.0025

  27340.0725    0.3573    0.0001    0.0000   -0.0000    0.0000    0.0000    0.0000

时间已过 0.046010 秒。

在这里插入图片描述

三. 小结

矩阵熵权法计算的示例,后期可能会用到,这里做个笔记。每天学一个MATLAB小知识,大家一起来学习进步阿!

猜你喜欢

转载自blog.csdn.net/sinat_34897952/article/details/125462043