不知道为啥,之前的笔记把运算符给漏掉了,还是有必要整理一下的,因为 MATLAB 的运算符还是和其它语言有很多差异的。

算术运算符

运算符 说明 示例
+ 加法 a + b
- 减法 a - b
+ 正号 + a
- 负号 - a
.* 按元素乘法 A .* B
.\ 按元素左除 A .\ B
./ 按元素右除 A ./ B
.^ 按元素幂运算 A .^ n
* 乘法 (矩阵乘法) A * B
\ 左除 (矩阵) A \ B
/ 右除 (矩阵乘法) A / B
^ 幂运算 (矩阵) A ^ n

说明:矩阵的左除 A\B 被设计用于求解如下方程组,(在 A 可逆时)相当于 inv(A) * B

1
A * x = B   ->    x = A\B

矩阵的右除 B/A 被设计用于求解如下方程组,(在 A 可逆时)相当于 B * inv(A)

1
x * A = B   ->    x = B/A

A 不可逆时通常会返回最小二乘解。

左除和右除具有如下转换关系('代表矩阵转置)

1
B/A = (A'\B')'

MATLAB 为了降低使用难度,通过这两个运算符隐藏了各种常见的方程组数值求解算法,在实际计算时涉及一套复杂的判定流程,并根据不同情况调用合适的数值算法,对于病态的方程组在求解过程中会发出警告。

关系运算符

运算符 说明 示例
== 等于 A == B
~= 不等于 A ~= B
> 大于 A > B
< 小于 A < B
>= 大于等于 A >= B
<= 小于等于 A <= B

注意:

  • MATLAB 使用的不等号并不是常见的 !=,而是 ~=
  • < 在面向对象中用于表示继承关系。

逻辑运算符

运算符 说明 示例 等价函数
& 按元素与 A & B and(A, B)
| 按元素或 A | B or(A, B)
~ 取反 ~A not(A)
&& 短路与 A && B
|| 短路或 A||B

注意:

  • andornot 在 MATLAB 中作为函数提供,用法与 C++ 或 Python 中的关键字不同。
  • &| 不会进行短路运算。
  • 短路逻辑运算 &&|| 仅适用于标量逻辑运算,不适用于矩阵或向量,并且没有直接的函数替代。
  • ~ 也被用于占位符。

特殊运算符

运算符 说明 示例 等价函数
' 共轭转置 A' ctranspose(A)
.' 仅转置 A.' transpose(A)
: 闭区间运算 1:5 -> [1 2 3 4 5] colon(1, 5)
end 末尾索引 A(end)

补充

MATLAB 没有以 &|~ 等形式提供位运算符,所有按位运算均需要使用专门的 bit* 函数(例如bitand(A, B)代表按位与),而且针对int等数据类型进行位运算才有意义。

1
2
3
4
5
6
7
8
A = uint8([0 1; 0 1]);
B = uint8([0 0; 1 1]);
TTable = bitand(A, B)

% TTable =
% 2x2 uint8 matrix
% 0 0
% 0 1