用嵌套for循环解topsis法 计算有两个属性六个方案的例题Matlab语言
时间: 2023-12-06 10:44:30 浏览: 104
MATLAB——求解for嵌套循环
假设有两个属性 A 和 B,六个方案 S1-S6,它们的属性值如下:
| | A | B |
|----|----|----|
| S1 | 3 | 7 |
| S2 | 4 | 6 |
| S3 | 9 | 4 |
| S4 | 2 | 8 |
| S5 | 8 | 3 |
| S6 | 5 | 5 |
步骤1:标准化矩阵
首先需要对矩阵进行标准化处理,使得每个属性的权重为1,即每个属性的平均值为1。标准化后的矩阵如下:
```matlab
A = [3 4 9 2 8 5];
B = [7 6 4 8 3 5];
% 计算归一化矩阵
A_norm = A ./ sqrt(sum(A.^2));
B_norm = B ./ sqrt(sum(B.^2));
% 计算加权归一化矩阵
w1 = 0.6;
w2 = 0.4;
A_w = A_norm * w1;
B_w = B_norm * w2;
% 组合成加权归一化矩阵
X = [A_w; B_w];
```
步骤2:计算正向和负向理想解
接下来需要计算正向和负向理想解,可以用下面的代码实现:
```matlab
% 计算正向理想解
max_A_w = max(A_w);
max_B_w = max(B_w);
ideal_pos = [max_A_w; max_B_w];
% 计算负向理想解
min_A_w = min(A_w);
min_B_w = min(B_w);
ideal_neg = [min_A_w; min_B_w];
```
步骤3:计算每个方案到正向理想解和负向理想解的距离
通过欧几里得距离计算每个方案到正向理想解和负向理想解的距离:
```matlab
% 计算每个方案到正向和负向理想解的距离
pos_dist = sqrt(sum((X - ideal_pos).^2));
neg_dist = sqrt(sum((X - ideal_neg).^2));
```
步骤4:计算综合得分
最后需要计算每个方案的综合得分,综合得分越高,说明该方案越优。综合得分的计算公式为:
$$score_i=\frac{neg\_dist_i}{pos\_dist_i+neg\_dist_i}$$
```matlab
% 计算综合得分
score = neg_dist ./ (pos_dist + neg_dist);
```
完整代码如下:
```matlab
% 假设有两个属性A和B,六个方案S1-S6
A = [3 4 9 2 8 5];
B = [7 6 4 8 3 5];
% 计算归一化矩阵
A_norm = A ./ sqrt(sum(A.^2));
B_norm = B ./ sqrt(sum(B.^2));
% 计算加权归一化矩阵
w1 = 0.6;
w2 = 0.4;
A_w = A_norm * w1;
B_w = B_norm * w2;
% 组合成加权归一化矩阵
X = [A_w; B_w];
% 计算正向理想解
max_A_w = max(A_w);
max_B_w = max(B_w);
ideal_pos = [max_A_w; max_B_w];
% 计算负向理想解
min_A_w = min(A_w);
min_B_w = min(B_w);
ideal_neg = [min_A_w; min_B_w];
% 计算每个方案到正向和负向理想解的距离
pos_dist = sqrt(sum((X - ideal_pos).^2));
neg_dist = sqrt(sum((X - ideal_neg).^2));
% 计算综合得分
score = neg_dist ./ (pos_dist + neg_dist);
```
阅读全文