[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>pi = 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));enda = 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
%使用层次分析法权重函数clearclc%输入自己的判断矩阵A = ;[w,CR] = cengci(A);