码迷,mamicode.com
首页 > 其他好文 > 详细

基于topsis和熵权法

时间:2019-12-01 12:07:15      阅读:89      评论:0      收藏:0      [点我收藏+]

标签:load   排列   列表   class   clear   矩阵   复制   nes   min   

 1 % % X    数据矩阵
 2 % % n    数据矩阵行数即评价对象数目
 3 % % m    数据矩阵列数即经济指标数目
 4 % % B    乘以熵权的数据矩阵
 5 % % Dist_max    D+ 与最大值的距离向量
 6 % % Dist_min    D- 与最小值的距离向量
 7 % % e    熵值列表
 8 % % d    信息熵冗余度
 9 % % w    权值表
10 % % stand_S    归一化矩阵
11 % % sorted_S    按照降序排列的数据矩阵
12 
13 %%  第一步:把数据复制到工作区,并将这个矩阵命名为X
14 clear;clc
15 load jingjizhibiao.mat;
16 
17 [n,m] = size(X);
18 disp([共有 num2str(n) 个地区,  num2str(m) 个经济指标]) ;
19 
20 
21 %% 第二步:熵权法赋权
22 %%计算第j个指标下,第i个样本占该指标的比重p(i,j)
23 for i=1:n
24     for j=1:m
25         p(i,j)=X(i,j)/sum(X(:,j));
26     end
27 end
28 %%计算第j个指标的熵值e(j)
29 k=1/log(n);
30 for j=1:m
31     e(j)=-k*sum(p(:,j).*log(p(:,j)));
32 end
33 d=ones(1,m)-e; %计算信息熵冗余度
34 w=d./sum(d); %求权值w
35 disp(最后的权重为 ; w =)
36 w
37 B=X.* repmat(w,n,1);%%每个元数据乘以对应指标的熵权值,
38 
39 disp(加入熵权的矩阵 B = );
40 disp(B);
41 
42 clear i j;%%释放无关变量
43 % % Z = B ./ repmat(sum(B.*B) .^ 0.5, n, 1);
44 % % disp(标准化矩阵 Z = )
45 % % disp(Z)
46 
47 %% 第三步 计算与最大值的距离和最小值的距离,并算出得分,(topsis分析)
48 
49 Dist_max = sum([(B - repmat(max(B),n,1)) .^ 2 ],2) .^ 0.5;   % D+ 与最大值的距离向量
50 Dist_min = sum([(B - repmat(min(B),n,1)) .^ 2 ],2) .^ 0.5;   % D- 与最小值的距离向量
51 disp(D + 为)
52 Dist_max
53 
54 disp(D - 为)
55 Dist_min
56 
57 S = Dist_min ./ (Dist_max+Dist_min);    % 未归一化的得分
58 disp(最后的得分为:)
59 stand_S = S / sum(S)
60 [sorted_S,index] = sort(stand_S ,descend)

matlab

基于topsis和熵权法

标签:load   排列   列表   class   clear   矩阵   复制   nes   min   

原文地址:https://www.cnblogs.com/shewhen/p/11965199.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!