clc,clear%熵权法matlab程序
R=[];%输入矩阵R,列代表评价指标评分,行代表同类别竞争对手
[m,n] = size(R);
R1 = zeros(m,n);
for i = 1:n
R1(:,i) = (R(:,i)-min(R(:,i)))/(max(R(:,i))-min(R(:,i)));%矩阵标准化
end
ex=sum(R1);
R2=zeros(m,n);
for i=1:m
for j=1:n
R2(i,j)=R1(i,j)/ex(j);%%求得pij
end
end
R3=R2.*log(R2);%求得pij*lnpij
R4=R3;
R4(find(isnan(R4)==1)) = 0;
ex=sum(R4);%求得sum (pij*lnpij)
ex1=-1/log(m)*ex;%每列信息熵
ex2=(1-ex1)/(n-sum(ex1));%每列权重
for i=1:m
R5(i)=sum(R(i,:).*ex2);%计算每个竞争对手得分
end
R5