用matlab实现熵权法,熵权法原理及matlab代码实现
时间: 2024-04-24 15:03:05 浏览: 62
熵权法是多属性决策分析中的一种方法,它可以将不同属性的权重通过计算熵值来确定,具有客观性和科学性。下面是熵权法的原理及MATLAB代码实现。
原理:
1.计算样本的熵值
2.计算每个属性的信息熵
3.计算属性的权重
MATLAB代码实现:
1.计算样本的熵值
```
function H = entropy(data)
%计算样本熵值
[m, n] = size(data);
H = 0;
for i = 1:m
p = sum(data(i,:))/sum(sum(data));
H = H - p*log2(p);
end
end
```
2.计算每个属性的信息熵
```
function H_attr = entropy_attr(data)
%计算每个属性的信息熵
[m, n] = size(data);
H_attr = zeros(n, 1);
for i = 1:n
p = data(:,i)/sum(data(:,i));
H_attr(i) = -sum(p.*log2(p));
end
end
```
3.计算属性的权重
```
function weight = entropy_weight(data)
%计算属性的权重
H = entropy(data);
H_attr = entropy_attr(data);
weight = (H - H_attr)/sum(H - H_attr);
end
```
这样,我们就可以通过entropy_weight函数得到每个属性的权重。
参考文献:
李洪涛, 赵洁. 熵权法及其在多属性决策中的应用[J]. 系统工程, 2006, 24(1): 1-4.
阅读全文