外贸仿牌网站建设,正规的代运营公司,上海企业战略规划,开源app开发工具一、数据总览 需求#xff1a;我们需要对各个银行进行评价#xff0c;A-G为银行的各个指标#xff0c;下面是银行的数据#xff1a; 二、代码逐行实现
清空代码和变量的指令
clear;clc;
层次分析法
每一行代表一个对象的指标评分
p [8,7,6,8;7,8,8,7];%每一行代表一个…
一、数据总览 需求我们需要对各个银行进行评价A-G为银行的各个指标下面是银行的数据 二、代码逐行实现
清空代码和变量的指令
clear;clc;
层次分析法
每一行代表一个对象的指标评分
p [8,7,6,8;7,8,8,7];%每一行代表一个对象的指标评分
A为自己构造的输入判别矩阵
%A为自己构造的输入判别矩阵
A[1,3,1,1/3;1/3,1,1/2,1/5;1,2,1,1/3;3,5,3,1];
求特征值特征向量,找到最大特征值对应的特征向量
%%
[n,m]size(A);
%求特征值特征向量,找到最大特征值对应的特征向量
[V,D]eig(A); %求特征值和特征向量 D记录特征值 V代表特征向量
%% 找到最大的特征值
tzzmax(max(D)); %找到最大的特征值 找到最大的特征值位置
c1find(max(D)tzz);%找到最大的特征值位置
最大特征值对应的特征向量
tzxV(:,c1);%最大特征值对应的特征向量 计算权重
quan1 tzx/sum(tzx);
%%
%赋权重
quanzeros(n,1);
for i1:nquan(i,1)tzx(i,1)/sum(tzx);
end 一致性检验
Qquan;
%一致性检验
CI(tzz-n)/(n-1);
RI[0,0,0.58,0.9,1.12,1.24,1.32,1.41,1.45,1.49,1.52,1.54,1.56,1.58,1.59];
%判断是否通过一致性检验
CRCI/RI(1,n);
if CR0.1fprintf(没有通过一致性检验\n);
elsefprintf(通过一致性检验\n);
end 显示出所有评分对象的评分值
%显示出所有评分对象的评分值scoreP*Q;for i1:length(score)name[object_score,num2str(i)];eval([name,score(i)])end Topsis层次分析法
待评价的数据
data[220 6 30 10 10 5
190 8 25 9 8 3
180 8 28 7 7 4
170 7 23 8 7 2]; 负向指标准化处理
%负向指标准化处理index3;for i1:length(index)data1(:,index(i))(max(data(:,index(i)))-data(:,index(i)))/(max(data(:,index(i)))-min(data(:,index(i))));
end 正向指标的标准化处理
%%
%%正向指标准化处理
index_all1:size(data1,2);
index_all(index)[]; % 除负向指标外其余所有指标
indexindex_all;
%%
for i1:length(index)data1(:,index(i))(data(:,index(i))-min(data(:,index(i))))/(max(data(:,index(i)))-min(data(:,index(i))));
end 标准化处理
%%标准化处理data1zscore(data);
% for j1:size(data1,2)
% data1(:,j) data(:,j)./sqrt(sum(data(:,j).^2));
% end 得到加权后的数据
%得到加权重后的数据
w[0.3724, 0.1003,0.1991, 0.1991,0.0998,0.0485]; %使用求权重的方法求得
Rdata1.*w; 得到最大值和最小值距离
%得到最大值和最小值距离
r_maxmax(R); %每个指标的最大值
r_minmin(R); %每个指标的最小值
d_z sqrt(sum([(R -repmat(r_max,size(R,1),1)).^2 ],2)) ; %d向量
d_f sqrt(sum([(R -repmat(r_min,size(R,1),1)).^2 ],2)); %d-向量
%sum(data,2)对行求和 sum(data默认对列求和 得到得分
%得到得分
sd_f./(d_zd_f );
Score100*s/max(s);
for i1:length(Score)fprintf(第%d个投标者百分制评分为%d\n,i,Score(i));
end 三、代码整体实现 下面是matlab实现层次分析法和Topsis综合评价法的代码
%% 层次分析法
clear;clc;
P[8,7,6,8;7,8,8,7];%每一行代表一个对象的指标评分
%%
%A为自己构造的输入判别矩阵
A[1,3,1,1/3;1/3,1,1/2,1/5;1,2,1,1/3;3,5,3,1];
%%
[n,m]size(A);
%求特征值特征向量,找到最大特征值对应的特征向量
[V,D]eig(A); %求特征值和特征向量 D记录特征值 V代表特征向量
%%
tzzmax(max(D)); %找到最大的特征值
%%
c1find(max(D)tzz);%找到最大的特征值位置
%%
tzxV(:,c1);%最大特征值对应的特征向量
%%
quan1 tzx/sum(tzx);
%%
%赋权重
quanzeros(n,1);
for i1:nquan(i,1)tzx(i,1)/sum(tzx);
end
%%
%%%
Qquan;
%一致性检验
CI(tzz-n)/(n-1);
RI[0,0,0.58,0.9,1.12,1.24,1.32,1.41,1.45,1.49,1.52,1.54,1.56,1.58,1.59];
%判断是否通过一致性检验
CRCI/RI(1,n);
if CR0.1fprintf(没有通过一致性检验\n);
elsefprintf(通过一致性检验\n);
end
%%
%显示出所有评分对象的评分值scoreP*Q;for i1:length(score)name[object_score,num2str(i)];eval([name,score(i)])end%% TOPSISclc;clear;%%
data[220 6 30 10 10 5
190 8 25 9 8 3
180 8 28 7 7 4
170 7 23 8 7 2];
%%index3;for i1:length(index)data1(:,index(i))(max(data(:,index(i)))-data(:,index(i)))/(max(data(:,index(i)))-min(data(:,index(i))));
end
%%
%%正向指标准化处理
index_all1:size(data1,2);
index_all(index)[]; % 除负向指标外其余所有指标
indexindex_all;
for i1:length(index)data1(:,index(i))(data(:,index(i))-min(data(:,index(i))))/(max(data(:,index(i)))-min(data(:,index(i))));
enddata1zscore(data);
% for j1:size(data1,2)
% data1(:,j) data(:,j)./sqrt(sum(data(:,j).^2));
% end%得到加权重后的数据
w[0.3724, 0.1003,0.1991, 0.1991,0.0998,0.0485]; %使用求权重的方法求得
Rdata1.*w;%得到最大值和最小值距离
r_maxmax(R); %每个指标的最大值
r_minmin(R); %每个指标的最小值
d_z sqrt(sum([(R -repmat(r_max,size(R,1),1)).^2 ],2)) ; %d向量
d_f sqrt(sum([(R -repmat(r_min,size(R,1),1)).^2 ],2)); %d-向量
%sum(data,2)对行求和 sum(data默认对列求和
%得到得分
sd_f./(d_zd_f );
Score100*s/max(s);
for i1:length(Score)fprintf(第%d个投标者百分制评分为%d\n,i,Score(i));
end对应的原理公式请跳转到下面的链接
http://t.csdn.cn/HXaGB