熵值法算法代码-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'; % 求综合得分












相关文档
最新文档