MATLAB 运算符

运算符是指示编译器执行特定数学或逻辑操作的符号。MATLAB主要用于处理整个矩阵和数组。因此,在MATLAB中运算符对标量和非标量数据都有效。MATLAB允许以下类型的初等运算。

  1. 算术运算符
  2. 关系运算符
  3. 逻辑运算符
  4. 位运算
  5. 集合运算
  6. 算术运算符

算数运算符

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具有两种类型的逻辑运算符和函数:

  • 逐元素 : 这些操作符对逻辑数组的相应元素进行操作。
  • 短路:这些运算符对标量和逻辑表达式进行操作。

基于元素的逻辑操作符对逻辑数组逐个元素进行操作。符号&|~分别代表逻辑逻辑关系与、或、非。

短路逻辑运算符允许短路逻辑操作。符号&&||分别代表逻辑关系

位运算

按位操作符对位进行操作并逐位执行操作。&|^的真值表如下 :

pqp & qp | qp ^ q
00000
01011
11110
10011

假设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

评论/回复

电子邮件地址不会被公开。 必填项已用*标注