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是标量,那么Xp是p的幂。如果p是整数,则通过重复平方计算幂。如果整数是负数,则X先倒数。对于p的其他值,计算涉及特征值和特征向量,因此如果[V,D]=eig(X),那么Xp=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。
逻辑运算示例
按位运算
按位运算符对位进行运算并执行逐位运算。&,|和^的真值表如下-
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)
整数 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
数组中的唯一值