Matlab 运算符

算术运算

若标量需要作为矩阵参与运算,则标量转化同型的矩阵,矩阵内所有元素都为这个标量。

矩阵运算

  1. 加减运算 + -
    相当于矩阵的加法和减法

    要求两个矩阵同型,则把矩阵中相应元素相加减
    矩阵也可以和标量相加减、相当于把矩阵里每一个元素相加减。
  2. 乘法运算 *
    相当于矩阵的乘法,若A, B中有一个为标量,则相当于矩阵的数乘运算。

    A * B 要求A的列数与B的行数相等
  3. 除法运算 / \
    相当于矩阵的求逆和矩阵的乘法

    右除 /: A / B,要求 B 可逆,等价于 A * inv(B)
    左除 \\: A \ B,要求 A 可逆,等价于 inv(A) * B
    两个矩阵的左除和右除的结果一般不相等,若其中有一个为标量,则结果相等。
  4. 乘方运算 ^
    相当于方阵幂运算

    要求矩阵为方矩。

点运算

点运算符有: .*./.\.^

点运算符是 matlab 一个很有特色的运算符,不同于矩阵的运算。

要求两个矩阵同型,将两个矩阵对应元素进行运算相应运算。

下面这个例子对比A * AA .* A的区别。

A = [1,2;3,4]
A * A
A .* A

矩阵A

$$ \begin{aligned} A=\\ &\begin{matrix} 1&2 \\ 3&4 \\ \end{matrix} \end{aligned} $$

A * A

$$ \begin{aligned} A \ * \ A=\\ &\begin{matrix} 7&10 \\ 15&22 \\ \end{matrix} \end{aligned} $$

A .* A

$$ \begin{aligned} A\ .*\ A=\\ &\begin{matrix} 1&4 \\ 9&16 \\ \end{matrix} \end{aligned} $$

关系运算符

关系运算符有:<<=>>===~=(不等于)。

规则:

  • 若两个操作数都为标量,则直接标记,关系成立结果为1,不成立结果为0
  • 若两个操作数是同型矩阵,则比较相应位置的元素,结果由0、1组成的矩阵。
  • 若两个操作数是同型矩阵,则比较相应位置的元素,结果由01组成的矩阵。
  • 若其中一个操作数是矩阵,则将标量转化为矩阵再比较。

逻辑运算

逻辑运算符:&|~

分别表示 且 或 非。

运算规则与 Java/C++ 的类似。

规则与关系运算符相同。

有一点不同的是,在 Java/C++的条件表达式中,我们会用这种形式表达逻辑运算

if (a > 0 && a < 5) { 
    // do someting
}

但在matlab中,我们应该写

if a > 0 & a < 5
    % do something
end

尽管在Java/C++中&&可以用&代替,但通常为了和位运算区分,我们不会这么做。而在matlab中,我们表示且运算只能使用&

运算符优先级

优先级和C++基本一致,从高到低的顺序是:算术运算、关系运算、逻辑运算。

但单目逻辑运算~(非) 优先级最高。

最后修改:2020 年 05 月 11 日
如果觉得我的文章对你有用,请随意赞赏