%熵权法加Topsis a=readmatrix('data_112.xlsx') a(:,1)=[] [n,m]=size(a) %p=(a-min(a))./(max(a)-min(a)); p=a./sum(a) e=-sum(p.*log(p))/log(n)%计算信息熵 g=1-e%计算变异系数 w=g./sum(g,2) b=readmatrix('data_112.xlsx') b(:,1)=[] c=b./vecnorm(b) f=c.*w Cstmax=max(f) Csmin=min(f) Ds1=vecnorm(f-Cstmax,2,2) Ds0=vecnorm(f-Csmin,2,2) zhfs=Ds0./(Ds0+Ds1) [sf,lind]=sort(zhfs,'descend')
时间: 2024-04-21 21:23:58 浏览: 84
这段代码使用了熵权法和Topsis方法对数据进行多指标决策分析。以下是对代码的分析:
1. 读取数据:使用`readmatrix`函数从名为'data_112.xlsx'的Excel文件中读取数据,并将数据存储在变量`a`中。
2. 数据预处理:将第一列删除,保留剩余的数据。使用`size`函数获取数据矩阵的行数和列数,并分别存储在变量`n`和`m`中。
3. 计算概率矩阵:将数据矩阵`a`中的每个元素除以其所在列的总和,得到概率矩阵。将概率矩阵存储在变量`p`中。
4. 计算信息熵:使用信息熵公式计算概率矩阵的信息熵,将结果存储在变量`e`中。
5. 计算变异系数:将信息熵减去1得到变异系数,将结果存储在变量`g`中。
6. 计算权重:将变异系数除以所有变异系数的总和,得到每个指标的权重。将权重存储在变量`w`中。
7. 读取数据:使用`readmatrix`函数再次读取数据,并将数据存储在变量`b`中。
8. 数据预处理:将第一列删除,保留剩余的数据。
9. 归一化处理:将数据矩阵`b`中的每个元素除以其所在列的2范数,得到归一化矩阵。将归一化矩阵存储在变量`c`中。
10. 加权处理:将归一化矩阵`c`的每个元素与对应的权重相乘,得到加权矩阵。将加权矩阵存储在变量`f`中。
11. 极大值和极小值处理:分别计算加权矩阵`f`每列的最大值和最小值,并将结果存储在变量`Cstmax`和`Csmin`中。
12. 计算正理想解与负理想解的欧式距离:计算加权矩阵`f`与极大值和极小值之间的欧式距离,分别存储在变量`Ds1`和`Ds0`中。
13. 计算综合得分:根据欧式距离计算综合得分,将结果存储在变量`zhfs`中。
14. 排序和指标排序:对综合得分进行降序排序,同时获取排序后的索引,分别存储在变量`sf`和`lind`中。`sf`表示按综合得分降序排列后的结果,`lind`表示排序后的索引。
通过这段代码,可以得到按照多指标综合得分进行排序的结果。
阅读全文