matlab 熵权法
时间: 2023-11-06 21:00:57 浏览: 92
熵权法是一种客观赋权方法,它根据各个变量的变异程度进行赋权。该方法通过计算变量的熵值和权重,得出各个变量的相对重要性。熵权法的计算过程包括以下几个步骤:
1. 将数据输入矩阵R中。
2. 计算每个变量的归一化值,并计算每个变量的熵值。
3. 根据变量的熵值计算权重。
4. 根据权重和变量的归一化值计算综合评分。
具体的matlab代码如下:
```matlab
clear
% 输入矩阵的大小,rows为对象个数,cols为指标个数
[rows,cols]=size(R);
k=1/log(rows); % 求k
Rmin = min(R);
Rmax = max(R);
A = max(R) - min(R);
y = R - repmat(Rmin,rows,1); % y(i,j) = (R - repmat(Rmin,rows,1))/(repmat(A,rows,1));
% 归一化
for j = 1 : size(y,2)
y(:,j) = y(:,j)/A(j);
end
% 计算Y(i,)
S = sum(y,1);
Y = zeros(rows,cols);
for i = 1 : size(Y,2)
Y(:,i) = y(:,i)/S(i);
end
% 计算lnYij
lnYij=zeros(rows,cols); % 初始化lnYij
for i=1:rows
for j=1:cols
if Y(i,j)==0
lnYij(i,j)=0;
else
lnYij(i,j)=log(Y(i,j));
end
end
end
% 计算熵值Hj
ej=-k*(sum(Y.*lnYij,1));
% 计算权重
weights=(1-ej)/(cols-sum(ej));
% 对变量进行熵权法客观赋权
F = zeros(rows,cols);
for k = 1 : size(R,2)
F(:,k) = weights(k)*y(:,k);
end
% 计算综合评分
F = sum(F,2);
```
阅读全文