请选择 进入手机版 | 继续访问电脑版
楼主: 晴天丁
27126 24

[问答] 熵权法求权重 [推广有奖]

谁可以教教我Matlab求熵权的详细步骤啊,不单单要程序还有怎么操作这个软件的

使用道具

silence明 发表于 2015-8-31 09:51:28 |显示全部楼层 |坛友微信交流群
0*log0是等于0的  前面那个inf不用管它,但是你要设计一个程序检查出NAN,并赋值为0就可以了

使用道具

cqhy2004 发表于 2016-1-20 17:20:47 |显示全部楼层 |坛友微信交流群
学习一下,留着

使用道具

matlab-007 发表于 2016-8-27 20:36:02 |显示全部楼层 |坛友微信交流群
Matlab程序实现

根据熵权法理论,编写Matlab程序如下:(新建一个M-File)
------------------------------------------------------分割线---------------------------------------------------------------
function weights = EntropyWeight(R)
%% 熵权法求指标权重,R为输入矩阵,返回权重向量weights

[rows,cols]=size(R); % 输入矩阵的大小,rows为对象个数,cols为指标个数
k=1/log(rows);        % 求k

f=zeros(rows,cols);   % 初始化fij
sumBycols=sum(R,1);   % 输入矩阵的每一列之和(结果为一个1*cols的行向量)
% 计算fij
for i=1:rows
  for j=1:cols
      f(i,j)=R(i,j)./sumBycols(1,j);
  end
end

lnfij=zeros(rows,cols); % 初始化lnfij
% 计算lnfij
for i=1:rows
  for j=1:cols
      if f(i,j)==0
          lnfij(i,j)=0;
      else
          lnfij(i,j)=log(f(i,j));
      end
  end
end

Hj=-k*(sum(f.*lnfij,1)); % 计算熵值Hj
weights=(1-Hj)/(cols-sum(Hj));
end

使用道具

123456qwet 发表于 2019-12-8 22:15:46 来自手机 |显示全部楼层 |坛友微信交流群
熵权法有几种数据标准化处理方法?看论文看的有点晕,不知道什么意思,除了正向和负向指标还有另外一种方法吗?

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-3-29 07:16