matlab熵权法实现
时间: 2023-09-08 08:15:37 浏览: 122
熵权法 MATLAB实现,熵权法matlab实现+层次分析法,matlab
5星 · 资源好评率100%
Matlab实现熵权法的步骤如下:
1. 进行数据的归一化处理。可以使用mapminmax函数将原始数据矩阵x进行归一化处理。在一些版本的Matlab中可能存在bug,需要进行额外的处理。可以使用以下代码进行归一化:
[X,ps]=mapminmax(x'); % 归一化
ps.ymin=0.002; % 归一化后的最小值
ps.ymax=0.996; % 归一化后的最大值
ps.yrange=ps.ymax-ps.ymin; % 归一化后的极差
X=mapminmax(x',ps); % 反归一化回到原数据
X=X'; % X为归一化后的数据,n行(对象),m列(指标)。
2. 求解各元素的信息熵。可以使用以下代码计算信息熵:
E_ele = [];
for i = 1:row
for j = 1:col
if ele_weight(i,j) == 0 % 规定0*ln(0) = 0,不赋值默认为0
continue
end
E_ele(i,j) = -ele_weight(i,j)*log(ele_weight(i,j)); % 计算信息熵,使用log函数取自然对数
end
end
E = sum(E_ele./log(row)); % 计算此特征的信息熵
sum_E = sum(E)
3. 使用weight函数来实现熵值法计算各指标的权重和各行的得分。可以使用以下代码实现:
function [s,w]=weight(x)
[n,m]=size(x); % 返回对象个数n,指标个数m
...
end
以上就是Matlab实现熵权法的基本步骤。在进行数据归一化后,通过计算各元素的信息熵,可以得到指标的权重。通过weight函数,可以得到各行的得分。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *3* [熵权法及matlab实现](https://blog.csdn.net/weixin_42620091/article/details/86665391)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
- *2* [数学建模之熵权法(EWM)matlab实例实现](https://blog.csdn.net/qq_52785473/article/details/122391016)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
阅读全文