• MATLAB程序设计与应用 2.5 MATLAB运算


    MATLAB程序设计与应用

    2. 第2章 MATLAB数据及其运算

    2.5 MATLAB运算

    MATLAB的运算都是针对矩阵而言的,既有矩阵意义下的运算,也有针对矩阵元素的运算。就运算的性质而言,有算术运算、关系运算和逻辑运算。

    2.5.1 算术运算
    1. 基本算术运算

      MATLAB的基本算术运算有+(加)、-(减)、*(乘)、/(右除)、\(左除)、^(乘方)。

      • 矩阵加减运算

        若A和B同型,则可以执行矩阵的加减运算,A和B的相应元素相加减。如果A与B不同型,则MATLAB将给出错误信息,提示用户两个矩阵的维数或大小不匹配。

        一个标量也可以和矩阵进行加减运算,这时把标量和矩阵的每一个元素进行加减运算。

        >> x = [2,-1,0;3,2,-4];
        >> y = x - 1
        
        y =
        
             1    -2    -1
             2     1    -5
        
        • 1
        • 2
        • 3
        • 4
        • 5
        • 6
        • 7
      • 矩阵乘法

        假定有两个矩阵A和B,若A为mxn矩阵,B为nxp矩阵,则C=A×B为mxp矩阵,其各个元素为:

        在这里插入图片描述

        >> A = [1,2,3;4,5,6];
        >> B = [1,2;3,0;7,4];
        >> C = A * B
        
        C =
        
            28    14
            61    32
        
        • 1
        • 2
        • 3
        • 4
        • 5
        • 6
        • 7
        • 8

        矩阵A和B进行乘法运算,要求A的列数与B的行数相等,此时则称A、B矩阵是可乘的,或称A和B两矩阵维数和大小相容。如果两者的维数或大小不相容,则将给出错误信息,提示用户两个矩阵是不可乘的。

        在 MATLAB中,还可以进行矩阵和标量相乘运算,标量可以是乘数也可以是被乘数。矩阵和标量相乘是矩阵中的每个元素与此标量相乘。

      • 矩阵除法

        在MATLAB中,有两种矩阵除法运算:\和/,分别表示左除和右除。如果A矩阵是非奇异方阵,则A\B和B/A运算可以实现。A\B等效于A的逆左乘B矩阵,也就是inv(A)*B;而B/A等效于A矩阵的逆右乘B矩阵,也就是B*inv(A)。

        对于含有标量的运算,两种除法运算的结果相同,对于矩阵运算,一般 A\B≠B/A。

        >> A = [1,2,3;4,2,6;7,4,9];
        >> B = [4,3,2;7,5,1;12,7,92];
        >> C1 = A \ B
        
        C1 =
        
            0.5000   -0.5000   44.5000
            1.0000    0.0000   46.0000
            0.5000    1.1667  -44.8333
        
        >> C2 = B / A
        
        C2 =
        
           -0.1667   -3.3333    2.5000
           -0.8333   -7.6667    5.5000
           12.8333   63.6667  -36.5000
        
        >> C3 = A / B
        
        C3 =
        
            7.9623   -4.2453   -0.0943
           -4.5472    2.9434    0.1321
           -5.1321    3.6415    0.1698
        
        >> C4 = B \ A
        
        C4 =
        
            6.0755   -3.3396    2.6038
           -7.6792    5.0566   -2.4340
           -0.1321    0.0943   -0.0566
        
        • 1
        • 2
        • 3
        • 4
        • 5
        • 6
        • 7
        • 8
        • 9
        • 10
        • 11
        • 12
        • 13
        • 14
        • 15
        • 16
        • 17
        • 18
        • 19
        • 20
        • 21
        • 22
        • 23
        • 24
        • 25
        • 26
        • 27
        • 28
        • 29
        • 30
        • 31
        • 32
        • 33
      • 矩阵的乘方

        一个矩阵的乘方运算可以表示成A^x,要求A为方阵,x为标量。

        >> A = [1,2,3;4,5,6;7,8,0];
        >> A ^ 2
        
        ans =
        
            30    36    15
            66    81    42
            39    54    69
        A ^ 2 = A * A
        
        • 1
        • 2
        • 3
        • 4
        • 5
        • 6
        • 7
        • 8
        • 9

        矩阵的开方

        >> A = [1,2,3;4,5,6;7,8,0];
        >> A ^ 0.1
        
        ans =
        
           0.9750 + 0.2452i   0.1254 - 0.0493i   0.0059 - 0.0604i
           0.2227 - 0.0965i   1.1276 + 0.1539i   0.0678 - 0.1249i
           0.0324 - 0.1423i   0.0811 - 0.1659i   1.1786 + 0.2500i
        
        • 1
        • 2
        • 3
        • 4
        • 5
        • 6
        • 7
        • 8
    2. 点运算

      在 MATLAB 中,有一种特殊的运算,因为其运算符是在有关算术运算符前面加点,所以叫点运算。点运算符有.*、./、.\和.^。两矩阵进行点运算是指它们的对应元素进行相关运算,要求两矩阵同型。

      >> A = [1,2,3;4,5,6;7,8,9];
      >> B = [-1,0,1;1,-1,0;0,1,1];
      >> C = A .* B
      
      C =
      
          -1     0     3
           4    -5     0
           0     8     9
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9

      A.*B表示A和B单个元素之间对应相乘,显然与A*B的结果不同。

      如果A、B两矩阵同型,则A./B表示A矩阵除以B矩阵的对应元素。B.\A 等价于A./B。

      >> A = [1,2,3;4,5,6];
      >> B = [-2,1,3;-1,1,4];
      >> C1 = A ./ B
      
      C1 =
      
         -0.5000    2.0000    1.0000
         -4.0000    5.0000    1.5000
      
      >> C2 = B .\ A
      
      C2 =
      
         -0.5000    2.0000    1.0000
         -4.0000    5.0000    1.5000
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15

      显然,A./B和B.\A值相等。这与矩阵的左除、右除是不一样的。

      若两个矩阵同型,则A.^B表示两矩阵对应元素进行乘方运算。

      >> A = [1,2,3];
      >> B = [4,5,6];
      >> C = A .^ B
      
      C =
      
           1    32   729
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7

      指数可以是标量

      >> A = [1,2,3];
      >> C = A .^ 2
      
      C =
      
           1     4     9
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6

      底数也可以是标量

      >> A = [1,2,3];
      >> B = [4,5,6];
      >> C = 2 .^ [A B]
      
      C =
      
           2     4     8    16    32    64
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7

      点运算是MATLAB很有特色的一个运算符,在实际应用中起着很重要的作用。

      当x=0.1、0.4、0.7、1时,分别求y=sinxcosx的值。

      >> x = 0.1:0.3:1;
      >> y = sin(x) .* cos(x)
      
      y =
      
          0.0993    0.3587    0.4927    0.4546
      
      >> y = sin(x) * cos(x)
      错误使用  * 
      用于矩阵乘法的维度不正确。请检查并确保第一个矩阵中的列数与第二个矩阵中的行数匹配。要单独对矩阵的每个元素进行运算,请使
      用 TIMES (.*)执行按元素相乘。
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11

      如果x只有一个值,才能直接用乘法

    2.5.2 关系运算

    MATLAB提供了6种关系运算符:<(小于)、<=(小于或等于)、>(大于)、>=(大于或等于)、=(等于)、~=(不等于)。它们的含义不难理解,但要注意其书写方法与数学中的不等式符号不尽相同。MATLAB还提供了与6种关系运算符对应的函数lt、le、gt、ge、eq、ne。

    • 当两个比较量是标量时,直接比较两数的大小。若关系成立,关系表达式结果为1,否则为0

      >> 12 > 3
      
      ans =
      
        logical
      
         1
      
      >> eq(2,3)
      
      ans =
      
        logical
      
         0
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
    • 当参与比较的量是两个同型的矩阵时,比较是对两矩阵相同位置的元素按标量关系运算规则逐个进行,并给出元素比较结果。最终的关系运算的结果是一个与原矩阵同型的矩阵,它的元素由0或1组成。

    • 当参与比较的一个是标量,而另一个是矩阵时,则把标量与矩阵的每一个元素按标量关系运算规则逐个比较,并给出元素比较结果。最终的关系运算的结果是一个与原矩阵同型的矩阵,它的元素由0或1组成。

    【产生5阶随机方阵A,其元素为[10,90]区间的随机整数,然后判断A的元素是否能被3整除。】

    >> A = fix((90 - 10 + 1) * rand(5) + 10)
    
    A =
    
        75    17    22    21    63
        83    32    88    44    12
        20    54    87    84    78
        83    87    49    74    85
        61    88    74    87    64
    
    >> P = rem(A , 3) == 0
    
    P =
    
      5×5 logical 数组
    
       1   0   0   1   1
       0   0   0   0   1
       0   1   1   1   1
       0   1   0   0   0
       0   0   0   1   0
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    关系运算函数

    函数名含义
    all若向量的所有元素非零,则结果为1,否则为0
    any若向量中任何一个元素非零,则结果为1,否则为0
    exist检查变量在工作空间中是否存在,若存在,则结果为1,否则为0
    find找出向量或矩阵中非零元素的位置
    isempty若被查变量是空矩阵,则结果为1,否则为0
    isinf若元素是+(-)inf,则结果矩阵相应位置元素取1,否则取0
    isnan若元素是 nan,则结果矩阵相应位置元素取否则取0
    isfinite若元素值大小有限,则结果矩阵相应位置元素取1,否则取0
    isinteger若被查变量是整型,则取1,否则取0
    isnumeric若被查变量是数值型,则取1,否则取0
    isreal若被查变量是实数,则取1,否则取0
    isfloat若被查变量是浮点型,则取1,否则取0

    【建立矩阵A,然后找出大于4的元素的位置,并输出相应位置的元素。】

    >> A = [4,-65,-54,0,6;56,0,67,-45,0]
    
    A =
    
         4   -65   -54     0     6
        56     0    67   -45     0
    
    >> k = find(A > 4)
    
    k =
    
         2
         6
         9
    
    >> A(k)
    
    ans =
    
        56
        67
         6
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    find 函数得到的矩阵元素的位置是以相应元素的序号来表示的。

    2.5.3 逻辑运算

    MATLAB提供了3种逻辑运算符:&(与)、|(或)和~(非)。此外,还提供了4个逻辑运算函数:and(a,b)、or(a,b)、not(a)和 xor(a,b),分别代表与、或、非、异或运算。

    在逻辑运算中,非零元素为真,用1表示;零元素为假,用0表示。设参与逻辑运算的是两个标量a和b,那么,逻辑运算的含义:

    • a&b或函数and(a, b):当a、b全为非零时,结果为1,a、b只要有一个为零则结果为0。
    • a|b或函数or(a, b):当a、b中只要有一个非零,结果为1,a、b全为零时结果为0。
    • ~a和函数not(a):当α是零时,结果为1:当α非零时,结果为0。
    • 函数xor(a, b):当a、b的值不同时,结果为1;当a、b的值相同时,结果为0。

    运算法则:

    1. 若参与逻辑运算的是两个同型矩阵,那么运算将对矩阵相同位上的元素按标量规则逐个进行。最终运算结果是一个与原矩阵同型的矩阵,其元素由1或0组成。
    2. 若参与逻辑运算的一个是标量,一个是矩阵,那么运算将在标量与矩阵中的每个元素之间按标量规则逐个进行。最终运算结果是一个与矩阵同型的矩阵,其元素由1或0组成。
    3. 逻辑非是单目运算符,也服从矩阵运算规则。
    >> A = [4,65,-54,0,-6];
    >> B = [0,5,3,2,-6];
    >> A & B
    
    ans =
    
      1×5 logical 数组
    
       0   1   1   0   1
    
    >> xor(A > 10 , B < 10)
    
    ans =
    
      1×5 logical 数组
    
       1   0   1   1   1
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    在算术运算、关系运算和逻辑运算中,算术运算优先级最高,逻辑运算优先级最低。

  • 相关阅读:
    百望云携手华为发布金融信创与数电乐企联合方案 创新金融合规变革
    Python并发编程简介
    Nuscenes 数据集
    10分钟教对象搭建了一个多人聊天室~
    java17 新特性(实用)
    算法系列-力扣141-链表中环的检测(含数学证明)
    Android Glide transform旋转rotate圆图CircleCrop,Kotlin
    BCC源码内容概览(5)
    CNN复现系列一:基于zcu102的yolov2(part4:sdk部分)
    国内乳品行业数据浅析
  • 原文地址:https://blog.csdn.net/weixin_44226181/article/details/126087759