topsis法结合权重matlab代码
时间: 2023-09-04 12:09:23 浏览: 195
下面是一个简单的 MATLAB 代码示例,使用 TOPSIS 方法结合权重:
```
clc;
clear all;
close all;
% 定义矩阵 X 和权重向量 w
X = [1, 2, 3, 4; 4, 3, 2, 1; 1, 3, 5, 7];
w = [0.2, 0.3, 0.1, 0.4];
% STEP 1: 归一化矩阵 X
[n, m] = size(X);
for i = 1:m
X(:,i) = X(:,i) / norm(X(:,i));
end
% STEP 2: 计算加权规范化矩阵 Y
Y = X * diag(w);
% STEP 3: 计算正理想解 A+ 和负理想解 A-
A_plus = max(Y,[],1);
A_minus = min(Y,[],1);
% STEP 4: 计算各个方案与正负理想解的距离
d_plus = sqrt(sum((Y - repmat(A_plus,n,1)).^2, 2));
d_minus = sqrt(sum((Y - repmat(A_minus,n,1)).^2, 2));
% STEP 5: 计算综合评价指数 C
C = d_minus ./ (d_plus + d_minus);
% STEP 6: 按照综合评价指数 C 的大小对方案进行排序
[~, rank] = sort(C, 'descend');
% 输出结果
disp('综合评价指数:');
disp(C);
disp('方案排名:');
disp(rank);
```
在上面的代码中,我们首先定义了输入矩阵 X 和权重向量 w。然后,我们进行了归一化处理,计算加权规范化矩阵 Y,并计算正负理想解 A+ 和 A-。接着,我们计算了各个方案与正负理想解的距离,然后通过 TOPSIS 方法计算出综合评价指数 C,并按照 C 的大小对方案进行排序。最后,输出了综合评价指数和方案排名。
需要注意的是,这只是一个简单的示例代码,实际应用中需要根据具体情况进行调整。
阅读全文