熵权Topsis 代码 matlab
时间: 2023-07-16 07:16:28 浏览: 150
【数据分析】Matlab实现熵权TOPSIS.zip
5星 · 资源好评率100%
以下是熵权TOPSIS的MATLAB代码示例:
```matlab
%输入数据矩阵
x = [1 2 3 4; 5 6 7 8; 9 10 11 12];
%标准化矩阵
[n,m] = size(x);
for j=1:m
s(j) = sqrt(sum(x(:,j).^2));
for i=1:n
x_norm(i,j) = x(i,j)/s(j);
end
end
%确定权重
w = [0.3 0.2 0.3 0.2];
%计算加权标准化矩阵
for j=1:m
for i=1:n
x_weighted(i,j) = w(j)*x_norm(i,j);
end
end
%计算正理想解和负理想解
for j=1:m
if j==1
v_pos(j) = max(x_weighted(:,j));
v_neg(j) = min(x_weighted(:,j));
else
v_pos(j) = min(x_weighted(:,j));
v_neg(j) = max(x_weighted(:,j));
end
end
%计算距离
for i=1:n
d_pos(i) = sqrt(sum((x_weighted(i,:)-v_pos).^2));
d_neg(i) = sqrt(sum((x_weighted(i,:)-v_neg).^2));
end
%计算综合评价指数
for i=1:n
CI(i) = d_neg(i)/(d_neg(i)+d_pos(i));
end
%计算熵权
p = sum(x_norm.^2)/n;
e = -sum(p.*log(p));
w_e = (1-e)/(m-e);
%计算加熵权后的综合评价指数
CI_weighted = CI*w_e;
```
注意:这只是一个示例代码,实际使用时可能需要根据具体的数据和权重进行调整。
阅读全文