运算符是一个符号,它告诉编译器执行特定的数学或逻辑操作。 MATLAB主要用于整个矩阵和阵列的操作。因此,MATLAB中的运算符既可用于标量数据也可用于非标量数据。MATLAB允许以下类型的基本操作 - 算术运算符 关系运算符 逻辑运算符 按位运算符 集合运算符
下面我们来一个一个地学习。 算术运算符MATLAB允许两种不同类型的算术运算 - 矩阵算术运算与线性代数中定义的相同。在一维和多维数组中,逐个元素执行数组运算。 矩阵运算符和数组运算符由句点符号(. )区分。 然而,由于对于矩阵和阵列的加减运算是相同的,因此对于这两种情况,运算符相同。下表简要说明了算术运算符 - 算术运算符示例代码 运算符 | 描述说明 |
---|
+ | 加法或一元加法运算。A + B 表示相加存储在变量A 和B 中的值。A 和B 必须具有相同的大小,除非是标量。 标量可以添加到任何大小的矩阵。 | - | 减法或一元减法运算。 A-B 表示从A 中减去B 的值。A 和B 必须具有相同的大小,除非是标量。可以从任何大小的矩阵中减去标量。 | * | 矩阵乘法。 C = A * B 是矩阵A 和B 的线性代数乘积。更准确地说,执行公式: ,对于非标量A 和B ,A 的列数必须等于B 的行数。标量可以乘以任何大小的矩阵。 | .* | 阵列乘法。 A .* B 是数组A 和B 的逐个元素乘积。A 和B 必须具有相同的大小,除非它们之一是标量。 | / | 数组乘法。A .* B 是数组A 和B 的逐个元素乘积。A 和B 必须具有相同的大小,除非它们之一是标量。 | ./ | 数组右除。A./B 是具有元素A(i,j)/ B(i,j) 的矩阵。 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 必须具有相同的大小,除非它们之一是标量。 | ^ | 矩阵 X ^ p 是X 的P 次幂,如果p 是标量。 如果p 是整数,则通过重复平方来计算幂值。 如果整数为负,则X 首先倒置。 对于p 的其他值,计算涉及特征值和特征向量,使得如果[V,D] = eig(X) ,则X ^ p = V * D. ^ p / V 。 | .^ | 阵列幂值, A ^ B 是B(i,j) 到A(i,j) 的幂矩阵。A 和B 必须具有相同的大小,除非它们之一是标量。 | ' | 矩阵转置。 ' 是A 的线性代数转置。对于复数矩阵,这是复共轭转置。 | .' | 数组转置。.' 是A 的数组转置。对于复数矩阵,这不涉及共轭。 |
关系运算符关系运算符也可以用于标量和非标量数据。数组的关系运算符在两个数组之间执行逐个元素的比较,并返回相同大小的逻辑数组,如果为真,则元素设置为逻辑1(true) ,如果为假,则元素设置为逻辑0(false) 。 下表显示了MATLAB中可用的关系运算符: 关系运算符示例代码 操作符 | 说明描述 |
---|
< | 小于 | <= | 小于或等于 | > | 大于 | >= | 大于或等于 | == | 等于 | ~= | 不等于 |
逻辑运算符MATLAB提供两种类型的逻辑运算符和函数: 元素逻辑运算符在逻辑数组上运行逐个元素。符号& ,| 和〜 是逻辑数组运算符AND ,OR 和NOT 。 短路逻辑运算符允许逻辑运算短路。符号&& 和|| 是逻辑短路运算符AND 和OR 。 逻辑运算符示例代码 位运算按位运算符对位执行,并执行逐位运算。& ,| 和^ 的真值表如下 - 假设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 字节,相当于乘以2^k 。 k 的负值对应于向右移位或除以`2^ | k | ` 并舍入到最接近的整数到负无穷大。任何溢出位都被截断。 | bitxor(a, b) | 整数a 和b 的逐字节位XOR 操作 |
|
| swapbytes | 交换字节排序 |
|
|
集合操作MATLAB为集合操作提供了各种功能,如联合,交集和集合成员的测试等。 下表显示了一些常用的集合操作 - 函数 | 描述 |
---|
intersect(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 行。其他返回0(false) 。 | issorted(A) | 如果A 的元素按排序顺序返回逻辑1 (真),否则返回逻辑0 (假)。输入A 可以是一个向量,也可以是N-by-1 或1-by-N 的字符串数组。 如果A 和sort(A) 的输出相等,则认为A 被排序。 | issorted(A, ‘rows’) | 如果二维矩阵A 的行按排序顺序返回逻辑1 (真),否则返回逻辑0 (假)。 如果A 和排序(A) 的输出相等,则认为矩阵A 被排序。 | setdiff(A,B) | 设置两个数组的差异; 返回A 中不在B 中的值。返回的数组中的值按排序顺序排列。 | setdiff(A,B,’rows’) | 将A 的每一行和B 的每一行视为单个实体,并从不在B 中的A 返回行。返回的矩阵的行按排序顺序排列。'rows' 选项不支持单元格数组。 | setxor | 设置两个数组的异或 | union | 设置两个数组的并集 | unique | 使数组中的值唯一 |
|