Matlab 运算符
算术运算
若标量需要作为矩阵参与运算,则标量转化同型的矩阵,矩阵内所有元素都为这个标量。
矩阵运算
- 加减运算
+
-
相当于矩阵的加法和减法
要求两个矩阵同型,则把矩阵中相应元素相加减
矩阵也可以和标量相加减、相当于把矩阵里每一个元素相加减。 - 乘法运算
*
相当于矩阵的乘法,若A, B中有一个为标量,则相当于矩阵的数乘运算。
A * B 要求A的列数与B的行数相等 - 除法运算
/
\
相当于矩阵的求逆和矩阵的乘法
右除/
: A / B,要求 B 可逆,等价于 A * inv(B)
左除\\
: A \ B,要求 A 可逆,等价于 inv(A) * B
两个矩阵的左除和右除的结果一般不相等,若其中有一个为标量,则结果相等。 - 乘方运算
^
相当于方阵幂运算
要求矩阵为方矩。
点运算
点运算符有: .*
、./
、.\
、.^
点运算符是 matlab 一个很有特色的运算符,不同于矩阵的运算。
要求两个矩阵同型,将两个矩阵对应元素进行运算相应运算。
下面这个例子对比A * A
和A .* 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组成的矩阵。
- 若两个操作数是同型矩阵,则比较相应位置的元素,结果由
0
、1
组成的矩阵。 - 若其中一个操作数是矩阵,则将标量转化为矩阵再比较。
逻辑运算
逻辑运算符:&
、|
、~
分别表示 且 或 非。
运算规则与 Java/C++ 的类似。
规则与关系运算符相同。
有一点不同的是,在 Java/C++的条件表达式中,我们会用这种形式表达逻辑运算
if (a > 0 && a < 5) {
// do someting
}
但在matlab中,我们应该写
if a > 0 & a < 5
% do something
end
尽管在Java/C++中&&
可以用&
代替,但通常为了和位运算区分,我们不会这么做。而在matlab中,我们表示且运算只能使用&
。
运算符优先级
优先级和C++基本一致,从高到低的顺序是:算术运算、关系运算、逻辑运算。
但单目逻辑运算~
(非) 优先级最高。