matlab层次分析法求权重
时间: 2023-11-21 08:46:43 浏览: 239
关于使用MATLAB进行层次分析法求取权重的问题,有以下两种方法可以使用:
方法一:算术平均法
根据算术平均法,可以通过以下步骤计算得到权重:
1. 将判断矩阵中每一列的元素除以该列元素之和,得到一个新的矩阵。
2. 对新矩阵的每一行进行求和,并将结果除以矩阵的行数,得到一个权重向量。
方法二:层次分析法
层次分析法需要通过编写MATLAB函数来计算权重。下面是一段示例代码,可以用于计算判断矩阵的权重:
function [w,CR] = cengci(A)
[~, n] = size(A);
x = ones(n,100);
y = ones(n,100);
m = zeros(1,100);
m(1) = max(x(:,1));
y(:,1) = x(:,1);
x(:,2) = A*y(:,1);
m(2) = max(x(:,2));
y(:,2) = x(:,2)/m(2);
p = 0.0001;
i = 2;
k = abs(m(2)-m(1));
while k>p
i = i + 1;
x(:,i) = A*y(:,i-1);
m(i) = max(x(:,i));
y(:,i) = x(:,i)/m(i);
k = abs(m(i)-m(i-1));
end
a = sum(y(:,i));
w = y(:,i)/a;
t = m(i);
CI = (t-n)/(n-1);
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];
CR = CI/RI(n);
if CR >= 0.1
disp('CR=');
disp(CR);
disp('一致性检验不通过,继续修改判断矩阵');
else
disp('CR=');
disp(CR);
disp('判断矩阵的一致性可以接受');
disp(w);
end
你可以根据自己的判断矩阵A调用以上函数进行权重计算。
阅读全文