层次分析法(matlab)
算术平均法
step1.输入判断矩阵A:
取值为1-9或他的倒数
A=[…];
(假设A是一个方阵)
将A按照列归一化
Sum_A=sum(A);%计算每列的和%
n=size(A,1); %求每列的大小%
S_A=repmat(Sum_A,n,1);
Stand_A=A./S_A;%得到归一化的A%
归一化各列相加(按行求和)
sum(Stand_A,2)
disp(sum(Stand_A,2)/n);%得到权重%
几何平均法
同样创建一个矩阵A
%将A的元素按照行相乘得到一个新的列向量%
Prduct_A=prod(A,2) %prod 相乘%
Prduct_n_A=Prduct_A.^(1/n)%将新的向量的每个开n次方%
%最后对该列向量进行归一化即可得到权重向量%
%将这个列向量的每一个元素除以这个向量的和%
disp('几何平均法求权重的结果为:');
disp(Prduct_n_A./sum(Prduct_n_A));
特征值法求权重
找出A的最大特征值及对应的特征向量,对其进行归一化即得到权重
[V,D]=eig(A) %V是特征向量,D是由特征值都成的对角矩阵(除了对角线元素外,其余位置全为0)%
Max_eig=max((max(D));%最大特征值%
D==Max_eig;
[r,c]=find(D==Max_eig,1);%r,c就是这个值的行列%
%最后对求出的特征向量进行归一化%
V(:,c)
dis(V(:,c)./sum(V(:,c)));
``
计算一致性比例CR
CI=(Max_eig-n)/(n-1);
%查找对应的平均随机一致性指标RI%
RI=[....]
CR=CI/RI(n);
disp(['一致性指标CI=',num2str(CI)]);
if CR<0.1
disp('一致性可以接受');
else
disp('判断矩阵A需要修改');
end