MATLAB - 运算符

运算符是告诉编译器执行特定数学或逻辑操作的符号。 MATLAB 旨在主要对整个矩阵和数组进行操作。 因此,MATLAB 中的运算符既可以处理标量数据,也可以处理非标量数据。 MATLAB 允许以下类型的基本运算符 −

  • 算术运算符
  • 关系运算符
  • 逻辑运算符
  • 按位运算
  • 集合运算

算术运算符

MATLAB 允许两种不同类型的算术运算 −

  • 矩阵算术运算
  • 数组算术运算

矩阵算术运算与线性代数中的定义相同。 数组操作是逐个元素执行的,无论是一维数组还是多维数组。

矩阵运算符和数组运算符通过句点 (.) 符号进行区分。 但是,由于矩阵和数组的加法和减法运算相同,因此两种情况的运算符相同。 下表给出了运算符的简要说明 −

显示示例

序号 运算符 & 描述
1

+

加法或一元加法。 A+B 将变量 A 和 B 中存储的值相加。A 和 B 必须具有相同的大小,除非其中一个是标量。 标量可以添加到任意大小的矩阵中。

2

-

减法或一元减法。 A-B 从 A 中减去 B 的值。A 和 B 必须具有相同的大小,除非其中一个是标量。 可以从任意大小的矩阵中减去标量。

3

*

矩阵乘法。 C = A*B 是矩阵 A 和 B 的线性代数积。更准确地说,

矩阵乘法

对于非标量 A 和 B,A 的列数必须等于 B 的行数。标量可以与任意大小的矩阵相乘。

4

.*

数组乘法。 A.*B 是数组 A 和 B 的逐元素乘积。A 和 B 必须具有相同的大小,除非其中之一是标量。

5

/

斜杠或矩阵右除。 B/A 与 B*inv(A) 大致相同。 更准确地说,B/A = (A'\B')'。

6

./

数组右除。 A./B 是包含元素 A(i,j)/B(i,j) 的矩阵。 A 和 B 必须具有相同的大小,除非其中之一是标量。

7

\

反斜杠或矩阵左除。 如果 A 是方阵,则 A\B 与 inv(A)*B 大致相同,只是计算方式不同。 如果 A 是 n×n 矩阵,B 是具有 n 个分量的列向量,或具有多个此类列的矩阵,则 X = A\B 是方程 AX = B 的解 。 如果 A 缩放不当或接近奇异,则会显示警告消息。

8

.\

数组左除。 A.\B 是包含元素 B(i,j)/A(i,j) 的矩阵。 A 和 B 必须具有相同的大小,除非其中之一是标量。

9

^

矩阵幂。 如果 p 是标量,则 X^p 是 X 的 p 次方。 如果 p 是整数,则通过重复平方计算幂。 如果整数为负数,则先将 X 取反。 对于 p 的其他值,计算涉及特征值和特征向量,因此如果 [V,D] = eig(X),则 X^p = V*D.^p/V。

10

.^

数组的乘方。 A.^B 是包含元素 A(i,j) 的 B(i,j) 次方的矩阵。 A 和 B 必须具有相同的大小,除非其中之一是标量。

11

'

矩阵转置。 A' 是 A 的线性代数转置。对于复数矩阵,这是复共轭转置。

12

.'

数组转置。 A。' 是 A 的数组转置。对于复数矩阵,这不涉及共轭。

关系运算符

关系运算符还可以处理标量和非标量数据。 数组的关系运算符在两个数组之间执行逐元素比较,并返回相同大小的逻辑数组,当关系为 true 时,元素设置为逻辑 1 (true),当关系不为 true 时,元素设置为逻辑 0 (false)。

下表显示了 MATLAB 中可用的关系运算符 −

显示示例

序号 运算符 & 描述
1

<

小于

2

<=

小于或等于

3

>

大于

4

>=

大于或等于

5

==

等于

6

~=

不等于

逻辑运算符

MATLAB 提供两种类型的逻辑运算符和函数 −

  • 按元素逻辑运算符 − 这些运算符对逻辑数组的相应元素进行操作。

  • 短路逻辑运算符 − 这些运算符对标量和逻辑表达式进行运算。

按元素逻辑运算符对逻辑数组逐个元素进行运算。 符号 &、| 和 ~ 是逻辑数组运算符 AND、OR 和 NOT。

短路逻辑运算符允许逻辑运算短路。 符号 && 和 || 是逻辑短路运算符 AND 和 OR。

显示示例

按位运算

位运算符作用于位并执行逐位运算。 & ,| ,^ 的真值表如下 −

p q p & q p | q p ^ q
0 0 0 0 0
0 1 0 1 1
1 1 1 1 0
1 0 0 1 1

假设 A = 60; B=13; 现在以二进制格式,它们将如下−

A = 0011 1100

B = 0000 1101

-----------------

A&B = 0000 1100

A|B = 0011 1101

A^B = 0011 0001

~A  = 1100 0011

MATLAB 提供了各种按位运算函数,例如"按位与"、"按位或"和"按位非"运算、移位运算等。

下表为常用的按位运算 −

显示示例

函数 用途
bitand(a, b) 整数ab的按位与
bitcmp(a) a 的按位补码
bitget(a,pos) 获取整数数组a中指定位置pos的位
bitor(a, b) 整数 ab 的按位或
bitset(a, pos) a的特定位置pos设置位
bitshift(a, k) 返回 a 向左移动 k 位,相当于乘以 2k。k 的负值对应于右移位或除以 2|k| 并向负无穷舍入到最接近的整数。 任何溢出位都会被截断。
bitxor(a, b) 整数 ab 的按位异或
交换字节 交换字节顺序

集合运算

MATLAB 提供了各种集合运算函数,例如并集、交集和集合成员资格测试等。

下表显示了一些常用的集合运算 −

Show Examples

序号 函数 & 描述
1

intersect(A,B)

设置两个数组的交集; 返回 A 和 B 共有的值。返回的值按排序顺序排列。

2

intersect(A,B,'rows')

将 A 的每一行和 B 的每一行视为单个实体,并返回 A 和 B 共有的行。返回矩阵的行按排序顺序排列。

3

ismember(A,B)

返回一个与 A 大小相同的数组,如果 A 的元素在 B 中找到,则包含 1 (true)。否则,它返回 0 (false)。

4

ismember(A,B,'rows')

将 A 的每一行和 B 的每一行视为单个实体,并返回一个包含 1 (true) 的向量,其中矩阵 A 的行也是 B 的行。在其他情况下,它返回 0 (false)。

5

issorted(A)

如果 A 的元素按排序顺序返回逻辑 1 (true),否则返回逻辑 0 (false)。 输入 A 可以是向量或 N×1 或 1×N 字符串单元格数组。 如果 A 和 sort(A) 的输出相等,则认为 A 已排序。

6

issorted(A, 'rows')

如果二维矩阵 A 的行按排序顺序,则返回逻辑 1 (true),否则返回逻辑 0 (false)。 如果 A 和 sortrows(A) 的输出相等,则认为矩阵 A 已排序。

7

setdiff(A,B)

设置两个数组的差异; 返回 A 中 B 中没有的值。返回数组中的值按排序顺序排列。

8

setdiff(A,B,'rows')

将 A 的每一行和 B 的每一行视为单个实体,并返回 A 中不在 B 中的行。返回矩阵的行按排序顺序排列。

'rows' 选项不支持单元格数组。

9

setxor

设置两个数组的异或

10

union

设置两个数组的并集

11

unique

数组中的唯一值