MATLAB - 运算符
运算符是一个符号,它告诉编译器执行特定的数学或逻辑操作。 MATLAB 旨在主要对整个矩阵和数组进行操作。因此,MATLAB 中的运算符既适用于标量数据,也适用于非标量数据。 MATLAB 允许以下类型的基本操作 -
- 算术运算符
- 关系运算符
- 逻辑运算符
- 按位运算
- 设置操作
算术运算符
MATLAB 允许两种不同类型的算术运算 -
- 矩阵算术运算
- 数组算术运算
矩阵算术运算与线性代数中的定义相同。数组操作是逐个元素执行的,一维和多维数组都可以。
矩阵运算符和数组运算符由句点 (.) 符号区分。但是,由于矩阵和数组的加法和减法运算相同,因此两种情况的运算符相同。下表给出了运算符的简要说明 -
显示示例
Sr.No. | 运算符和描述 |
---|---|
1 | + 加法或一元加法。 A+B 将存储在变量 A 和 B 中的值相加。A 和 B 必须具有相同的大小,除非一个是标量。标量可以添加到任意大小的矩阵中。 |
2 | - 减法或一元减法。 A-B 从 A 中减去 B 的值。A 和 B 必须具有相同的大小,除非一个是标量。可以从任意大小的矩阵中减去标量。 |
3 | * 矩阵乘法。 C =A*B 是矩阵 A 和 B 的线性代数积。更准确地说,
对于非标量的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 是 X 的 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的数组转置。对于复杂的矩阵,这不涉及共轭。 |
关系运算符
关系运算符也可以处理标量和非标量数据。数组的关系运算符在两个数组之间执行逐个元素的比较,并返回一个大小相同的逻辑数组,其中元素设置为逻辑 1 (true),关系为真,元素设置为逻辑 0 (false),关系为真不是。
下表显示了 MATLAB 中可用的关系运算符 -
显示示例
Sr.No. | 运算符和描述 |
---|---|
1 | < 小于 |
2 | <= 小于或等于 |
3 | > 大于 |
4 | >= 大于等于 |
5 | == 等于 |
6 | ~= 不等于 |
逻辑运算符
MATLAB 提供两种类型的逻辑运算符和函数 -
-
Element-wise - 这些运算符对逻辑数组的相应元素进行操作。
-
短路 - 这些运算符对标量和逻辑表达式进行操作。
逐元素逻辑运算符对逻辑数组逐个元素进行操作。符号 &、| 和 ~ 是逻辑数组运算符 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) | 在指定位置获取位pos , 在整数数组 a |
bitor(a, b) | 整数a的按位或 和 b |
bitset(a, pos) | 在特定位置设置位pos 一个 |
bitshift(a, k) | 返回 a 向左移动 k 位,相当于乘以 2 k . k 的负值对应于右移或除以 2 |k| 并向负无穷方向舍入到最接近的整数。任何溢出位都会被截断。 |
bitxor(a, b) | 整数a的按位异或 和 b |
swapbytes | 交换字节顺序 |
设置操作
MATLAB提供了各种集合运算的函数,比如联合、交集和集合成员的测试等。
下表显示了一些常用的集合操作 -
显示示例
Sr.No. | 功能与说明 |
---|---|
1 | 相交(A,B) 设置两个数组的交集;返回 A 和 B 共有的值。返回的值按排序顺序排列。 |
2 | 相交(A,B,'行') 将 A 的每一行和 B 的每一行视为单个实体,并返回 A 和 B 共有的行。返回的矩阵的行按排序顺序排列。 |
3 | 会员(A,B) 返回一个与 A 大小相同的数组,包含 1(真),其中 A 的元素在 B 中找到。在其他地方,它返回 0(假)。 |
4 | ismember(A,B,'rows') 将 A 的每一行和 B 的每一行视为单个实体,并返回一个包含 1(真)的向量,其中矩阵 A 的行也是 B 的行。在其他地方,它返回 0(假)。 |
5 | 已分类(A) 如果 A 的元素按排序顺序返回逻辑 1 (true),否则返回逻辑 0 (false)。输入 A 可以是向量或 N×1 或 1×N 字符串元胞数组。 如果A被认为是排序的 和sort(A)的输出相等。 |
6 | 已排序(A,'行') 如果二维矩阵 A 的行已排序,则返回逻辑 1(真),否则返回逻辑 0(假)。 如果矩阵A被认为是排序的 sortrows(A) 的输出是相等的。 |
7 | setdiff(A,B) 设置两个数组的差异;返回 A 中不在 B 中的值。返回数组中的值按排序顺序排列。 |
8 | setdiff(A,B,'rows') 将 A 的每一行和 B 的每一行视为单个实体,并返回 A 中不在 B 中的行。返回矩阵的行按排序顺序排列。 'rows' 选项不支持元胞数组。 |
9 | 设置异或 设置两个数组的异或 |
10 | 联合 设置两个数组的并集 |
11 | 独特 数组中的唯一值 |
MATLAB