topsismatlab代码
时间: 2023-07-02 20:08:49 浏览: 38
Topsis是一种多属性决策分析方法,可以用于评估和排序具有多个属性的决策选项。以下是MATLAB代码示例:
```matlab
function [C, R] = topsis(X, w)
% TOPSIS - Technique for Order of Preference by Similarity to Ideal Solution
%
% Syntax:
% [C, R] = topsis(X, w)
%
% Inputs:
% X - 每行为一个决策选项,每列为一个评价指标,矩阵大小为 m-by-n
% w - 评价指标权重,向量大小为 1-by-n
%
% Outputs:
% C - 每个决策选项的相对接近度,向量大小为 m-by-1
% R - 对决策选项进行排序后的排名,向量大小为 m-by-1
%
% Example:
% X = [2 4 5 8; 3 6 4 3; 5 3 4 4; 7 8 9 6];
% w = [0.25 0.25 0.25 0.25];
% [C, R] = topsis(X, w);
%
% Reference:
% Hwang, C. L. and Yoon, K. (1981). Multiple Attribute Decision Making:
% Methods and Applications, Springer-Verlag, New York.
% 归一化矩阵
[n, m] = size(X);
X_norm = zeros(n, m);
for j = 1:m
X_norm(:,j) = X(:,j) ./ norm(X(:,j));
end
% 权重归一化
w_norm = w ./ norm(w);
% 理想解和负理想解
Z = zeros(1, m);
S = zeros(1, m);
for j = 1:m
if ismember(j, find(w > 0))
Z(j) = max(X_norm(:,j));
S(j) = min(X_norm(:,j));
else
Z(j) = min(X_norm(:,j));
S(j) = max(X_norm(:,j));
end
end
% 距离计算
D = zeros(n, 2);
for i = 1:n
D(i,1) = norm(w_norm .* (X_norm(i,:) - Z));
D(i,2) = norm(w_norm .* (X_norm(i,:) - S));
end
% 相对接近度
C = D(:,2) ./ sum(D, 2);
% 排名
[~, R] = sort(C, 'descend');
end
```
示例:
```matlab
X = [2 4 5 8; 3 6 4 3; 5 3 4 4; 7 8 9 6];
w = [0.25 0.25 0.25 0.25];
[C, R] = topsis(X, w);
```
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![text/plain](https://img-home.csdnimg.cn/images/20210720083646.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)