MATLAB 运算符
运算符是指示编译器执行特定数学或逻辑操作的符号。MATLAB主要用于处理整个矩阵和数组。因此,在MATLAB中运算符对标量和非标量数据都有效。MATLAB允许以下类型的初等运算。
- 算术运算符
- 关系运算符
- 逻辑运算符
- 位运算
- 集合运算
- 算术运算符
算数运算符
MATLAB中有两种不同类型的算术运算 :
- 数组算数运算
- 矩阵算数运算
矩阵算术运算与线性代数中的定义相同。数组操作是逐个元素执行的,包括一维数组和多维数组。
矩阵运算符和数组运算符由句点“ . ”符号区分。然而,由于加法和减法运算对于矩阵和数组是相同的,所以运算符对于这两种情况是相同的。下表对操作符进行了简要描述 :
运算符 | 作用 |
---|---|
+ | 加法或一元加号,A+B意味着将存储在A和B中的值相加,两者必须具有相同的尺寸,除非其中一个是标量。 |
– | 减法或一元减法,与加法的意义正好相反,也要求相同尺寸,除非其中一个为标量。 |
* | 矩阵乘法。C=A*B是为矩阵A与矩阵B的线性代数乘积。对于非标量A和B, A的列数必须等于B的行数,标量可以乘以任意大小的矩阵。 |
.* | 数组乘法。A.*B是、数组A和数组B的元素与元素的乘积。A和B必须有相同的大小,除非其中一个是标量。 |
\ | 反斜杠或矩阵左除法。如果A是一个方阵,A\B与inv(A)*B大致相同,只不过计算方法不同。如果A是一个n×n矩阵,B是一个有n个分量的列向量,或者一个有几个这样的列的矩阵。那么X = A\B是方程AX = B的解,如果A缩放不好或近似奇异,则显示警告消息。 |
.\ | 数组左除法。A.\B是元素B(i,j)/A(i,j)的矩阵。A和B必须有相同的大小,除非其中一个是标量。 |
/ | 斜杠或矩阵右除法。B/A与B*inv(A)大致相同。更准确地说,B/A = (A’\B’)’。 |
./ | 数组右除法。A./B是元素A(i,j)/B(i,j)的矩阵。A和B必须有相同的大小,除非其中一个是标量。 |
^ | 矩阵幂运算。如果p是一个标量,X^p等于X的p次方;如果p是整数,幂的计算方法是反复平方。如果这个整数是负的,那么X先取倒数。对于p的其他值,计算包括特征值和特征向量,如[V,D] = eig(X),则X^p = V*D ^p/V。 |
.^ | 数组的幂运算。一个。^B是矩阵A(i,j)的B(i,j)次方。A和B必须有相同的大小,除非其中一个是标量。 |
‘ | 矩阵的转置。A’是A的线性代数转置对于复矩阵,这是复共轭转置。 |
.’ | 数组转置。A.’是A的数组转置,对于复杂矩阵,不涉及共轭。 |
关系运算符
关系运算符可以同时用于标量和非标量数据。数组的关系运算符在两个数组之间执行逐个元素的比较,并返回相同大小的逻辑数组,其中元素设置为逻辑1 (true),关系为真,而元素设置为逻辑0 (false),关系为假。
运算符 | 意义 |
---|---|
< | 小于 |
<= | 小于或等于 |
> | 大于 |
>= | 大于或等于 |
== | 等于 |
~= | 不等于 |
逻辑运算符
MATLAB具有两种类型的逻辑运算符和函数:
- 逐元素 : 这些操作符对逻辑数组的相应元素进行操作。
- 短路:这些运算符对标量和逻辑表达式进行操作。
基于元素的逻辑操作符对逻辑数组逐个元素进行操作。符号&、|、~分别代表逻辑逻辑关系与、或、非。
短路逻辑运算符允许短路逻辑操作。符号&&和||分别代表逻辑关系和、或。
位运算
按位操作符对位进行操作并逐位执行操作。&、|和^的真值表如下 :
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的位与AND操作 |
bitcmp(a) | a的比特补码 |
bitget(a,pos) | 在整数数组a中,获取指定的位置pos位字节 |
bitor(a, b) | 整数a和b的逐位OR操作 |
bitset(a, pos) | 设置在指定pos处的位字节 |
bitshift(a, k) | 返回向左移位k字节,相当于乘以2k。 k的负值对应于向右移位或除以2|k| 并舍入到最接近的整数到负无穷大。任何溢出位都被截断。 |
bitxor(a, b) | 整数a和b的逐字节位XOR操作 |
swapbytes | 交换字节排序 |
集合运算
MATLAB提供了集合运算的各种函数,如集合的并集、交集和测试等。
下表列举了一些常用的集合运算:
函数 | 作用 |
---|---|
insert(A,B) | 设置两个数组的交集;返回A和b共同的值。返回的值是排序的。 |
intersect(A,B,’rows’) | 将A的每行和B的每行视为单个实体,并返回A和B的公共行。返回矩阵的行是排序的。 |
ismember(A,B) | 返回一个与A大小相同的数组,其中包含1 (true),其中A的元素在b中找到。其他地方,返回0 (false)。 |
ismember(A,B,’rows’) | 将A的每一行和B的每一行作为单个实体,并返回一个包含1 (true)的向量,其中矩阵A的行也是B的行。 |
issorted(A | 如果A的元素是有序的,则返回逻辑1 (true),否则返回逻辑0 (false)。输入A可以是一个向量,或者是一个n乘1或1乘n的字符串单元数组。如果A和sort(A)的输出相等,则认为A已排序。 |
issorted(A, ‘rows’) | 如果二维矩阵A的行是有序的,则返回逻辑1 (true),否则返回逻辑0 (false)。如果A和sortrows(A)的输出相等,则认为矩阵A已排序。 |
setdiff(A,B) | 设置两个数组的差值;返回A中不在B中的值。返回数组中的值按顺序排序。 |
setdiff(A,B,’rows’) | 将A的每一行和B的每一行作为单个实体,并返回A中不在B中的行。返回矩阵的行是排序的。“rows”选项不支持单元格数组。 |
setxor | 设置两个数组的异或 |
union | 设置两个数组的并集 |
unique | 数组中的唯一值 |

关注公众号,获取一手资讯
“ MATLAB 运算符 ” comments 0