熵值法算法代码-MATLAB
%%算法一(熵值法确定权重算法及Matlab实现-https://www.360docs.net/doc/179113364.html,/thread-452528-1-1.html)
x=[]; %%手动粘贴输入数据
[n,m]=size(x);
[X,ps]=mapminmax(x',0.1,1.1);
X=X'; % X为归一化后的数据, n行(品种), m列(指标)
%% 计算第j个指标下,第i个记录占该指标的比重p(i,j)
for i=1:n
for j=1:m
p(i,j)=X(i,j)/sum(X(:,j));
end
end
%% 计算第j个指标的熵值e(j)
k=1/log(n);
for j=1:m
e(j)=-k*sum(p(:,j).*log(p(:,j)));
end
d=ones(1,m)-e; % 计算信息熵冗余度
w=d./sum(d); % 求权值w
s=w*p';
s=s'; % 求综合得分
%算法二(第二次课件PPT上的方法)
x=[]; %%手动粘贴输入数据
x=x';
[n,m]=size(x);
[X,ps]=mapminmax(x',0.1,1.1);
X=X'; % X为归一化后的数据, n行(品种), m列(指标)
%% 计算第j个指标下,第i个记录占该指标的比重p(i,j)
for i=1:n
for j=1:m
p(i,j)=X(i,j)/sum(X(:,j));
end
end
%% 计算第j个指标的熵值e(j)
k=1/log(n);
for j=1:m
e(j)=-k*sum(p(:,j).*log(p(:,j)));
end
%%计算差异系数g(j)
g=(ones(1,m)-e)./(m-sum(e));
w=g./sum(g); % 求权值w
s=w*p';
s=s'; % 求综合得分