层次分析法(matlab)

层次分析法(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
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值