zoukankan      html  css  js  c++  java
  • 数学建模层次分析法与matlab初识

    MatLab基础小常识

    tip1:在每一行的语句后面加上分号表示不显示运行结果,加上的话则显示

    tip2:多行注释 Ctrl+r,解除多行注释 Ctrl+t

    tip3:clc可以清除命令行窗口中的所有文本,即清屏操作

    tip4:clear可以清除工作区的所有变量

    输入输出函数(input和disp)

    disp()函数可以近似理解为C语言中的printf()函数

    向量表示方法

    1. [1 2 3]

    2. [1,2,3]

    MatLab中字符串的合并方法

    1. strcat("字符串1","字符串2");

    2. ['字符串1' '字符串2'];

    num2str:数字转化为字符串

    str2num:字符串转化为数字

    如:disp(strcat('c的取值为' num2str(100)));是合法的

    input()函数可以近似理解为C语言中的scanf()函数

    input函数内可以放提示信息,如input("请输入A:");

    并且语句后加分号不显示运行结果,不加则显示

    求和函数sum()

    1. 如果是向量,无论行列,直接求和

    2. 如果是矩阵,则需要根据行和列的方向做区分

      E=[1,2,3

      4,5,6],则sum(E)可得到5 7 9;

      sum(E,1)得到的也是5 7 9

      但sum(E,2)得到的却是6 15

      sum函数第二个参数为1代表求列向量和,为2则代表求行向量和

    3. 若想对整个矩阵求和,则应该写为sum(sum(E));或者sum(E(:));

    获取矩阵中特定位置的元素

    假如有一矩阵为

    A=[1,2,3

    4,5,6

    7,8,9],则A(2,1)=4;

    A(2,:)=4,5,6; 冒号代表所有

    取多行:A([1,2],:)--会输出1 2 3

    4 5 6

    取连续行,假如对某个足够大矩阵要取2--5行

    则应该写为A(2:5,:); 2:5其实是2:1:5 表示的是一个等差数列,公差为1递增

    而且若一个矩阵非常大,大到我们‘懒得’统计它的行数,这是我们想要取到第二行到最后一行的内容,可以这样写A(2:end,:);

    取全部元素:A(:);且按列优先的方式呈现出来.

    size()函数,如A=[1,2,3,4,5;

    1,2,3,4,5;

    6,7,8,9,10]

    size(A)=3,5;

    一般会用一个向量来接收size()的返回值,[r,c]=size(A);

    则r=3,c=5;

    size(A,1)返回的是行数,以A为例就是3,

    size(A,2)返回的是列数,以A为例就是5;

    repmat(矩阵A,m,n)意为将A矩阵重复m*n块,m-行,n-列

    1. Matlab中 * / 代表的是矩阵之间的乘除,并不是代表两数之间的乘除,而规模一样的矩阵之间的对应元素的乘除应该用.*和 ./来表示

    2. 假设某矩阵A每个元素要与常数相乘或除,直接A*n即可,

    3. 假设某个矩阵A每个元素都要乘方,则A .^2

    平均值法求权重

    1. 对每一列求和

    2. 所求出来的和行向量使用repmat()函数使其变为与原矩阵规模等大的矩阵

    3. 然后俩矩阵对应元素相除。

    4. 然后对相除所得的矩阵按行求和得到一个和列向量,然后列向量除以n即可得权重

    几何平均值法求权重

    1. 矩阵按行求乘积 product = prod(a,2),2代表按行求和

    2. 然后对这个乘积开n次方 product _a = product .^(1/n);

    3. 最后对得到的这个向量 每个元素除以整个向量的和即可

    特征值法求权重

    1. 求目标矩阵A的最大特征值及其最大特征值对应的特征向量,[V,D]=eig(A);V即为特征向量拼起来组成的一个矩阵,D为几个特征值组成的对角矩阵

    2. 然后在D中找出最大的特征值 the_max = max(max(D));

    3. 然后通过 the_max==D 来得到一个逻辑矩阵,在逻辑矩阵中只有0和1,并且为1的那一个元素所对应的索引就是最大特征值所处在的位置,在通过[r,c]=find(D,1);r为行,c为列

    4. 然后从特征向量拼起来组成的矩阵V中提取出这个特征向量,采取的操作是 the_tezheng = v(:,c),按列.

    5. 最后各指标的权重就为 the_quanzhong = the_tezheng ./sum(the_tezheng);这里的the_quanzhong 即为权重,并以列向量呈现。

    extra:一致性检验,CI=(the_max-n)/(n-1),RI查表可得

    CR=CI/RI(n);

    if CR<0.1

    disp("通过了一致性检验")!

    else

    disp("没有通过一致性检验")!

    end



  • 相关阅读:
    OSPF
    【今日CS 视觉论文速览】 24 Jan 2019
    【今日CS 视觉论文速览】Wed, 23 Jan 2019
    【今日CS 视觉论文速览】 21 Jan 2019
    【Processing学习笔记】安装与入门
    【今日CS 视觉论文速览】Part2, 18 Jan 2019
    【今日CS 视觉论文速览】Fri, 18 Jan 2019
    【今日CS 视觉论文速览】Thu, 17 Jan 2019
    【今日CS 视觉论文速览】Part2, 16 Jan 2019
    【今日CS 视觉论文速览】Wed, 16 Jan 2019
  • 原文地址:https://www.cnblogs.com/yuanshixiao/p/13411807.html
Copyright © 2011-2022 走看看