层次分析法原理网上有很多,我发一个代码实现。
只需要输入各个参数的重要程度即可。
disp('请输入各个参数的重要程度');
c=input('c=');
A=[];
n=3; %记得修改判断矩阵的大小,否则会报错
%生成判断矩阵
for i=1:n
for j=1:n
A(i,j)=c(i)/c(j);
end
end
[n,n]=size(A);
u=[];
w=[];
RI=[0 0 0.52 0.89 1.12 1.26 1.36 1.41 1.46 1.49 1.52 1.54 1.56 1.58 1.59];
%方根法求权值
for i=1:n
num=1;
for j=1:n
num=num*A(i,j);
end
u(i)=power(num,1/3);
end
for i=1:n
sum=0;
for j=1:n
sum=sum+u(j);
end
w(i)=u(i)/sum;
end
w=w';
Aw=A*w;
rd=0;
for i=1:n
rd=rd+(Aw(i)/n/w(i));
end
CI=(rd-n)/(n-1);
CR=CI/RI(n);
if CR<0.10
disp('此矩阵的一致性可以接受!');
disp('CI=');disp(CI);
disp('CR=');disp(CR);
end