熵权法(循环求解)

来源:互联网 发布:mac系统软件卸载 编辑:程序博客网 时间:2024/06/02 04:12

熵权法原理及适用情况

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


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

clc;clearload ('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)])   ;    % 矩阵标准化endfor 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    endendk=(log(m))^(-1);e=-k*s;h=ones(1,n)-e;w=h/sum(h)          % 指标权重值if ii==1    m22= m2*w';elseif ii==2m33 =m3*w';elseif ii==3m55=m5*w';elseif ii==4m11 = m1*w';elseif ii==5m66=m6*w';elsem44= m4*w';endendmz=[m11,m22,m33,m44,m55,m66];  %m1到m6的综合评价值
0 0
原创粉丝点击