全员极大型Topsis评价代码
%% 数据读取
clear,clc;
datas_matrix=xlsread('evaluation','B2:D13');
[n,m] = size(datas_matrix);
%% 权重
%如果不需要加权重就默认权重都相同,即都为1/m
weigh = ones(1,m) ./ m ;
%% 归一化
for i = 1:m
tmp = datas_matrix(:,i)
datas_S_matrix(:,i) = (tmp - min(tmp))/(max(tmp) - min(tmp));
end
%% 计算与最大值的距离和最小值的距离,并算出得分
max_dis = sum([(datas_S_matrix - repmat(max(datas_S_matrix),n,1)) .^ 2 ] .* repmat(weigh,n,1) ,2) .^ 0.5;
min_dis = sum([(datas_S_matrix - repmat(min(datas_S_matrix),n,1)) .^ 2 ] .* repmat(weigh,n,1) ,2) .^ 0.5;
S = min_dis ./ (max_dis+min_dis);
results = S / sum(S);
[sorted_results,index] = sort(results ,'descend');
format short
R = [index,sorted_results];
xlswrite('results.xls',R);