MATLAB 学习笔记——7. 运算符
不知道为啥,之前的笔记把运算符给漏掉了,还是有必要整理一下的,因为 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 |
注意:
and
、or
、not
在 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 | A = uint8([0 1; 0 1]); |
All articles on this blog are licensed under CC BY-NC-SA 4.0 unless otherwise stated.
Comments