熵权法matlab代码求权重
时间: 2023-07-07 13:35:16 浏览: 363
熵权法求权重 matlab程序
以下是熵权法的MATLAB代码实现,用于求解各个指标的权重:
```matlab
% 假设有3个指标,数据存储在矩阵A中
A = [1 2 3; 4 5 6; 7 8 9];
% 对每个指标进行标准化处理
[m, n] = size(A); % m表示数据个数,n表示指标个数
B = zeros(m, n); % 存储标准化后的数据
for i = 1:n
B(:, i) = (A(:, i) - min(A(:, i))) ./ (max(A(:, i)) - min(A(:, i)));
end
% 计算每个指标的熵值
E = zeros(1, n); % 存储每个指标的熵值
for i = 1:n
p = B(:, i) / sum(B(:, i)); % 计算每个数据的概率
E(i) = -sum(p .* log2(p)); % 计算熵值
end
% 计算每个指标的权重
w = (1 - E) / sum(1 - E);
```
其中,矩阵A存储原始数据,B存储标准化后的数据,E存储每个指标的熵值,w存储每个指标的权重。需要注意的是,熵值的计算中使用了log2函数,因此在计算之前需要确保数据都是正数。
阅读全文