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的线性代数积。更准确地说,

Matrix Multiplication

对于非标量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是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 的数组转置。对于复杂的矩阵,这不涉及共轭。

关系运算符

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

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

关系运算示例

序号运算符和说明
1

<

小于

2

<=

小于或等于

3

>

大于

4

>=

大于或等于

5

==

等于

6

~=

不等于

逻辑运算符

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

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

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

逐个元素的逻辑运算符在逻辑数组上逐个元素地进行操作。符号&,|和〜是逻辑数组运算符AND,OR和NOT。

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

逻辑运算示例

按位运算

按位运算符对位进行运算并执行逐位运算。&,|和^的真值表如下-

pqp&qp | qp ^ Q
00000
01011
11110
10011

假设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)

整数 a 和 b 的位与

bitcmp(a)

a的逐位补码

bitget(a,pos)

在整数数组a的指定位置获取位

bitor(a, b)

整数a和b的位或

bitset(a, pos)

将bit设置为a的特定位置pos

bitshift(a, k)返回一个由向左移动ķ比特,相当于乘以2 ķk的负值对应于右移位或除以2 | k | 并朝负无穷大四舍五入到最接近的整数。任何溢出位都将被截断。
bitxor(a, b)

整数 a 和 b 的位异或

swapbytes

整数 a 和 b 的位异或

集合运算符

MATLAB提供了用于集合操作的各种功能,例如联合,交集和集合成员资格的测试等。

下表显示了一些常用的设置操作-

集合运算示例

序号功能说明
1

intersect(A,B)

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

2

intersect(A,B,'rows')

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

3

ismember(A,B)

返回一个与A大小相同的数组,其中包含1(true),其中A的元素位于B中。在其他位置,它返回0(false)。

4

ismember(A,B,'rows')

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

5

issorted(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

数组中的唯一值