基於topsis和熵權法


 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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM