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
原文地址:https://www.cnblogs.com/shewhen/p/11965199.html
时间: 2024-10-16 08:14:17