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的线性代数积。 |
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 | ^ 矩阵升幂。X^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),表示关系为真,在关系不成立的地方设置为逻辑值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 中获取指定位置 pos 的比特位 |
bitor(a, b) | 对整数 a 和 b 进行位或运算 |
bitset(a, pos) | 将 a 的指定位置 pos 的比特位设置为 1 |
bitshift(a, k) | 将 a 向左移动 k 位,等同于将 a 乘以 2 k 。当 k 为负数时,将 a 向右移动或者除以 2 |k| 并向负无穷方向取整。溢出的比特位将被舍弃。 |
bitxor(a, b) | 对整数 a 和 b 进行位异或运算 |
swapbytes | 交换字节顺序 |
集合运算
MATLAB提供了各种集合运算的函数,如并集、交集和判断是否属于集合等。
下表显示了一些常用的集合运算:
显示例子
Sr.No. | 功能和描述 |
---|---|
1 | intersect(A,B) 两个数组的交集;返回A和B中共有的值。返回的值按照排序顺序排列。 |
2 | intersect(A,B,’rows’) 将A和B的每一行作为一个实体,并返回A和B共有的行。返回的矩阵的行按照排序顺序排列。 |
3 | ismember(A,B) 返回与A的大小相同的数组,其中包含A中的元素在B中找到的位置为1(真),其他位置为0(假)。 |
4 | ismember(A,B,’rows’) 将A和B的每一行作为一个实体,并返回一个向量,其中包含A的矩阵的行也是B的行的位置为1(真),其他位置为0(假)。 |
5 | issorted(A) 如果A的元素按照排序顺序排列,则返回逻辑值1(真),否则返回逻辑值0(假)。输入A可以是向量或者N行1列或者1行N列的字符串的单元数组。 A被认为是排序的条件是A 与sort(A)的输出相等。 |
6 | issorted(A, ‘rows’) 如果二维矩阵A的行按照排序顺序排列,则返回逻辑值1(真),否则返回逻辑值0(假)。 矩阵A被认为是排好序的条件是A 与sortrows(A)的输出相等。 |
7 | setdiff(A,B) 两个数组的差集;返回在A中而不在B中的值。返回的值按照排序顺序排列。 |
8 | setdiff(A,B,’rows’) 将A和B的每一行作为一个实体,并返回从A中不属于B的行。返回的矩阵的行按照排序顺序排列。 ‘rows’选项不支持单元格数组。 |
9 | setxor 两个数组的异或集 |
10 | union 两个数组的并集 |
11 | unique 数组中的唯一值 |