熵权法Matlab编程(刚学matlab的一个小白所编)

熵权法Matlab编程(刚学matlab的一个小白所编)

熵权法介绍及11行9列的数据可见文章https://wenku.baidu.com/view/c96487ee16fc700aba68fc4e.html。
程序脚本如下:
%% 导入数据
R= xlsread(‘E:\matlab作业\R.xlsx’,‘Sheet1’);
%数据量较少时可用R=[];
%% 数据标准化处理
%确定每一个指标数据中的最大值与最小值(这里就是列向量当中的最大值与最小值)
max_Xi=max(R);
min_Xi=min(R);
%求m,n(这里的n表示指标个数)
[m,n]=size(R);
%分子
fenzi_yij=R-repmat(min_Xi,m,1);
%分母
fenmu_yij=repmat(max_Xi-min_Xi,m,1);
%结果
Yij=fenzi_yij./fenmu_yij;
%% 各指标的信息熵
%求pij
%分之已知,分母求Yij的列向量的和
sum_Yij=sum(Yij,1);
Sum_Yij=repmat(sum_Yij,11,1);
pij=Yij./Sum_Yij
%求对数函数值
for i=1:m
for j=1:n
if pij(i,j)==0
lnpij(i,j)=0;
else
lnpij(i,j)=log(pij(i,j));
end
end
end
%计算Ei
Ei=-1/log(m)*sum(pij.*lnpij);
%% 确定各指标权重
Wi=(1-Ei)./(n-sum(Ei))

  • 3
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值