熵权法(循环求解)

熵权法原理及适用情况

需要看的点击下面蓝颜色就可以看了,一个百度文库里面的
熵权法原理及适用情况


快速求解几张不同表格数据或者每年相同数据等等熵权法,下面就让我说下m1~m6的含义:
m1:一张表格里面有若干个指标
m2:一张表格里面有若干个指标
m3:一张表格里面有若干个指标
m4:一张表格里面有若干个指标
m5:一张表格里面有若干个指标
m6:一张表格里面有若干个指标
本来需要重复运行6次的,这里写的代码一次性就实现了。特别提醒:matlab 数据具有覆盖性并且如果第一次循环样本>第二次循环样本大小,这样就会报错,所以 你选择样本最小的先循环,就是在每个表格样本相同的情况时候,选择指标最少的先求解。我写的代码,没按顺序求解,原因就是先求解指标少的。

clc;clear
load ('all2000firstdate.mat')  %将数据放在matlab工作目录下面,导入数据
[z1,g1] = size(m2);
[z2,g2] = size(m3);
[z3,g3] = size(m5);
[z4,g4] = size(m1);
[z5,g5] = size(m6);
[z6,g6] = size(m4);
mm=[m2,m3,m5,m1,m6,m4];
for ii=1:6
    if ii ==1  
       g=g1;
       x2=mm(:,1:g);

       elseif ii==2    
      g=g1+g2;
      g0=g1+1;
      x2=mm(:,g0:g);

       elseif ii==3
      g0=g1+g2+1;
      g=g1+g2+g3;
         x2=mm(:,g0:g);

      elseif ii==4  
        g0=g1+g2+1+g3;
      g=g1+g2+g3+g4;
         x2=mm(:,g0:g);

       elseif ii==5
      g0=g1+g2+1+g3+g4;
      g=g1+g2+g3+g4+g5;
      x2=mm(:,g0:g);

       else
      g0=g1+g2+1+g3+g4+g5;
      g=g1+g2+g3+g4+g5+g6;
      x2=mm(:,g0:g);

    end



 N2 = ( max(x2(:))-x2)/(max(x2(:))-min(x2(:)));% 全部定义为负指标

x1=N2;
y=[];
f=[];
[m,n]=size(x1);
for i=1:n
   y(:,i)=x1(:,i)/sum([x1(:,i)])   ;    % 矩阵标准化
end




for l=1:n
    s(1,l)=0;
    for j=1:m
       if y(j,l)==0;%%%%%%%%“==”表示等于“=”是赋值
           p(1,l)=0;
            s(1,l)=s(1,l);
        else    
        p(1,l)=y(j,l)*log(y(j,l));
        s(1,l)=s(1,l)+p(1,l);
         end
    end
end
k=(log(m))^(-1);
e=-k*s;
h=ones(1,n)-e;
w=h/sum(h)          % 指标权重值
if ii==1
    m22= m2*w';
elseif ii==2
m33 =m3*w';
elseif ii==3

m55=m5*w';
elseif ii==4
m11 = m1*w';
elseif ii==5
m66=m6*w';
else
m44= m4*w';
end


end

mz=[m11,m22,m33,m44,m55,m66];  %m1到m6的综合评价值
  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值