层次分析法:matlab代码实现

计算权重:

一、算术平均法

关于矩阵:

1、矩阵的输入写法

     [ ; ; ]同行用空格或逗号隔开,不同行用分号间隔

2、矩阵求和

     默认按列求和 a=sum(E) 等同于 a=sum(E,1) 得到行向量

     按行求和 a=sum(E,2) 得到列向量

     对整个矩阵求和 a=sum(E,"all")或者a=sum(E(:)) 或者 a=sum(sum(E))

3、矩阵求积

     默认按列求积  a=prod(E)或者a=prod(E,1)

     按行求积 a=prod(E,2)

     整个矩阵求积 a=prod(E,"all")

4、提取指定位置的元素 A(i,j)

     提取指定行的全部元素 A(i,:)  列的全部元素 A(:,j)

     提取第2行和第5行 A([2,5],:)

     提取2到5行 A(2:5,:) end表示最后一行

     提取第2行和第4行 A(2:2:5,:) 从2开始,每次加2,不包括5

5、 A(:)或A表示所有元素

     按列拼接,以一整个列向量输出

6、 [r,c]=size(A) 返回矩阵的行数和列数

      size(A,1)返回行数,size(A,2)返回列数

 

7、B=repmat(A,m,n) 复制矩阵A,B由m*2个A平铺而成

8、矩阵的乘法和除法 A*B   A/B=A*inv(B)乘以逆矩阵

      形状相同的矩阵对应元素的乘除法用'.*'和'./'

      乘方^ 和 .^

此处判断矩阵实为一个方阵: 

clear;clc

A=input('请输入判断矩阵A:')

%第一步: 归一化(先对列求和得一个行向量,再让矩阵对应除以该行向量)
sum_Acol=sum(A)

r=size(A,1)
c=size(A,2)
%这里把行向量复制row次,成一个与A同形的矩阵,再让对应元素作除法
B=repmat(sum_Acol,r,1)
Stand_A=A./B 

%第二步: 算权重向量(先按行求和得一个列向量,再除以col)
res=sum(Stand_A,2)/c


二、几何平均法

clear;clc

A=input("请输入判断矩阵A:")
%第一步: 先按行相乘,再开n次方,得到一个列向量
Prod_Arow=prod(A,2)
n=size(A,2)
B=Prod_Arow.^(1/n)

%第二步: 归一化
res=B./(sum(B))

三、特征值法

特征向量与特征值:

1、求特征值 E=eig(A)  A的全部特征值构成向量E

2、[V,D]=eig(A)  A的特征向量构成V的列向量,A的所有特征值构成对角阵D

find:

1、p=find(X,n) 返回前n个符合条件的元素的位置(按列来读)

2、[r,c]=find(X,n) 返回的位置是二维坐标

clear;clc

A=input("请输入判断矩阵A:")

%第一步: 求矩阵的最大特征值及其对应的特征向量
[V,D]=eig(A)
Max_eig=max(max(D)) %找最大特征值
[r,c]=find(D==Max_eig,1) %找D中第一个与最大特征值相等的元素的位置
B=V(:,c) %提取最大特征值对应的特征向量(提取列)

%第二步: 对特征向量归一化
res=B./sum(B)



一致性检验:

%计算一致性比例CR
n=size(A,1)
CI=(Max_eig-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.10
    disp("一致性检验通过")
else
    disp("一致性检验不通过")
end %函数或循环都要以end结尾

 

 

相关推荐

  1. 层次分析matlab代码实现

    2024-07-13 15:32:02       21 阅读
  2. 【数值分析】乘幂matlab实现

    2024-07-13 15:32:02       46 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-13 15:32:02       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-13 15:32:02       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-13 15:32:02       58 阅读
  4. Python语言-面向对象

    2024-07-13 15:32:02       69 阅读

热门阅读

  1. Tg机器人开发:实现自动化图片审核功能

    2024-07-13 15:32:02       19 阅读
  2. Mojo AI编程语言(三)数据结构:高效数据处理

    2024-07-13 15:32:02       23 阅读
  3. postgresql创建只读权限的用户

    2024-07-13 15:32:02       18 阅读
  4. Oracle数据文件扩容

    2024-07-13 15:32:02       23 阅读
  5. vue3的服务端渲染实战项目(1)共12节

    2024-07-13 15:32:02       24 阅读
  6. ubuntu 24.04 安装telnet服务

    2024-07-13 15:32:02       22 阅读
  7. 【Docker Install SQL Server】

    2024-07-13 15:32:02       19 阅读