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



  • 相关阅读:
    MSP430G2553 4x4矩阵键盘
    数论 (1)
    吐血分享一款免费看所有付费影视的app,不好用来石欠我
    Nginx如何部署静态web项目
    SpringBoot-RestTemplate实现调用第三方API
    信息收集小技巧
    kali常用命令
    kali中的Firefox改中文
    反射与注解
    MyBatis-Plus 基本用法
  • 原文地址:https://www.cnblogs.com/yuanshixiao/p/13411807.html
Copyright © 2011-2022 走看看