一、算数运算符
MATLAB 的工作针对的是整个矩阵和阵列,它允许两种不同类型的算术运算:
矩阵算术运算
阵列算术运算
矩阵的算术运算与线性代数中的定义相同:执行数组操作,无论是在一维还是多维数组元素。矩阵运算符和数组运算符是有区别的句号(.)符号。然而,由于加法和减法运算矩阵和阵列是相同的,操作者这两种情况下是相同的。下表给出了运算符的简要说明:
操作符 | 描述 |
---|---|
+ | 加法或一元加号。A + B将A和B。 A和B必须具有相同的尺寸,除非一个人是一个标量。一个标量,可以被添加到任何大小的矩阵。 |
- | 减法或一元减号。A - B,减去B从A和B必须具有相同的大小,除非是一个标量。可以从任意大小的矩阵中减去一个标量。 |
* |
矩阵乘法;是一个更精确的矩阵A和B的线性代数积, 矩阵乘法对于非纯量A和B,列一个数必须等于B.标量可以乘以一个任意大小的矩阵的行数。 |
.* | 数组的乘法;A.*B是数组A和B的元素积,A和B必须具有相同的大小,除非A、B中有一个是标量。 |
/ |
斜线或矩阵右除法;B/A与B * inv(A)大致相同。更确切地说:
B/A = (A'B')'
|
./ | 矩阵右除法;矩阵A与矩阵B相应元素相除(A、B为同纬度的矩阵) |
.\ | 反斜杠或矩阵左除;如果A是一个方阵,AB是大致相同的INV(A)* B,除非它是以不同的方式计算。如果A是一个n*n的矩阵,B是一个n组成的列向量,或是由若干这样的列的矩阵,则X = AB 是方程 AX = B ,如果A严重缩小或者几乎为单数,则显示警告消息。 |
. | 数组左除法;A. B是元素B(i,j)/A(i,j)的矩阵。A和B必须具有相同的大小,除非其中一个是标量。 |
^ | 矩阵的幂。X^P是X到幂P,如果p是标量;如果p是一个整数,则通过重复平方计算功率。如果整数为负数,X首先反转。对P值的计算,涉及到特征值和特征向量,即如果[ D ] = V,EIG(x),那么X^P = V * D.^P / V。 |
.^ | A.^B:A的每个元素的B次幂(A、B为同纬度的矩阵) |
' | 矩阵的转置;A'是复数矩阵A的线性代数转置,这是复共轭转置。 |
.' | 数组的转置;A'是数组A的转置,对于复数矩阵,这不涉及共轭。 |
除了上述列举的一些算术运算符,MATLAB 中还拥有以下的命令/功能:
函数 | 描述 |
---|---|
uplus(a) | 一元加号;增加量a |
plus (a,b) | 相加;返回 a + b |
uminus(a) | 一元减号;减少a |
minus(a, b) | 相减;返回 a - b |
times(a, b) | 数组相乘;返回 a.*b |
mtimes(a, b) | 矩阵相乘;返回 a* b |
rdivide(a, b) | 右阵划分;返回 a ./ b |
ldivide(a, b) | 左阵划分;返回 a. b |
mrdivide(A, B) | 求解线性方程组xA = B for x |
mldivide(A, B) | 求解线性方程组xA = B for x |
power(a, b) | 数组求幂;返回 a.^b |
mpower(a, b) | 矩阵求幂;返回 a ^ b |
cumprod(A) |
累积乘积;返回与包含累积乘积的数组A相同大小的数组。
|
cumprod(A, dim) | 沿维 dim 返回返回累积乘积。 |
cumsum(A) |
累加总和;返回包含累积和的数组A
|
cumsum(A, dim) | 返回沿着dim的元素的累积和。 |
diff(X) |
差分和近似导数;计算x相邻元素之间的差异。
|
diff(X,n) | 递归应用n次,导致第n个差异。 |
diff(X,n,dim) | 它是沿标量dim指定的维数计算的第n个差分函数。 如果order n等于或超过Dim的长度,diff将返回一个空数组。 |
prod(A) |
数组元素的乘积;返回A数组元素的乘积。
如果输入A为单个,则prod函数计算并返回B为单个;对于所有其他数字和逻辑数据类型,prod函数计算并返回B为double。
|
prod(A,dim) | 沿dim维度返回乘积。 例如,如果A是矩阵,则prod(A,2)是包含每一行的乘积的列向量。 |
prod(___,datatype) | 在数据类型指定的类中乘以并返回一个数组。 |
sum(A) |
|
sum(A,dim) | 沿标量A的维度求和。 |
sum(..., 'double')
sum(..., dim,'double') |
执行双精度加法,并返回double类型的答案,即使A具有数据类型单一或整型数据类型。这是整型数据类型的默认值。 |
sum(..., 'native')
sum(..., dim,'native') |
在本机数据类型A中执行添加,并返回相同数据类型的答案。 这是单和双的默认值。 |
ceil(A) | 向正无穷方向舍入;将a元素舍入为大于或等于A的最近整数。 |
fix(A) | 舍入为零 |
floor(A) | 向负无穷方向舍入;将a元素舍入为小于或等于a的最近整数。 |
idivide(a, b)
idivide(a, b,'fix') |
整数除法的舍入选项;与A./B相同,只是分数的商向零舍入到最接近的整数。 |
idivide(a, b, 'round') | 分数的商舍入到最近的整数。 |
idivide(A, B, 'floor') | 分数商向负无穷大舍入到最接近的整数。 |
idivide(A, B, 'ceil') | 分数商向无穷大舍入到最接近的整数。 |
mod (X,Y) |
除法后的模数;返回X - n.* Y,其中 n = floor(X./Y)。 如果Y不是整数,并且商X / Y在整数的舍入误差内,则n是整数。 输入X和Y必须是相同大小的真实数组或实数标量(提供Y〜= 0)。
请注意:
|
rem (X,Y) |
除法之后的余数;返回X - n.* Y,其中n = fix(X./Y)。 如果Y不是整数,并且商X / Y在整数的舍入误差内,则n是整数。 输入X和Y必须是相同大小的真实数组或实数标量(提供Y〜= 0)。
请记住:
|
round(X) | 舍入到最接近的整数; 将X的元素舍入到最接近的整数。 正数元素的小数部分为0.5,最大到最接近的正整数。 负数元素的小数部分为-0.5,向下舍入到最接近的负整数。 |
二、逻辑运算符
MATLAB逻辑运算都是针对元素的操作,运算结果是特殊的逻辑数组;在逻辑分析时,逻辑(真)用1表示,逻辑假用0表示,逻辑运算中所有的非零元素作为1处理。
函数 | 描述 |
---|---|
and(A, B) | 查找数组或标量输入的逻辑和;执行所有输入数组A,B等的逻辑AND,并返回包含设置为逻辑1(真)或逻辑0(假)的元素的数组。如果所有输入数组在同一个数组位置都包含一个非零元素,那么输出数组的一个元素将被设置为1;否则,该元素设置为0。 |
not(A) | 查找数组或标量输入的逻辑NOT;执行输入数组A的逻辑NOT,并返回包含设置为逻辑1(真)或逻辑0(假)的元素的数组。如果输入数组在同一个数组位置包含一个零值元素,那么输出数组的一个元素将被设置为1;否则,该元素设置为0。 |
or(A, B) | 查找数组或标量输入的逻辑或; 执行所有输入数组A,B等的逻辑或,并返回包含设置为逻辑1(真)或逻辑0(假)的元素的数组。如果任何输入数组在同一个数组位置包含一个非零元素,则输出数组的一个元素设置为1;否则,该元素设置为0。 |
xor(A, B) | 逻辑异或; 对数组A和B的相应元素执行异或运算。如果A(i,j,...)或B(i,j)...,则所得到的元素C(i,j,...) j,...),但不是两者都是非零的。 |
all(A) |
确定数组A的所有数组元素是否为非零或真。
|
all(A, dim) | 通过标量dim沿着维数A的维度进行测试。 |
any(A) |
确定数组元素是否为非零;测试数组中不同维度的元素是否为非零数字,或是逻辑1(真)。 任何函数忽略NaN(不是数字)的条目。
|
any(A,dim) | 通过标量dim沿着维数A的维度进行测试。 |
false | 逻辑0(假) |
false(n) | 是逻辑0的n×n矩阵 |
false(m, n) | 是逻辑0的一个m×n矩阵。 |
false(m, n, p, ...) | 是由逻辑0的逐列逐列数组。 |
false(size(A)) | 是与数组A大小相同的逻辑零数组。 |
false(...,'like',p) | 是与逻辑阵列p相同的数据类型和稀疏性的逻辑零数组。 |
ind = find(X) | 查找非零元素的索引和值;定位数组X的所有非零元素,并返回向量中这些元素的线性索引。 如果X是行向量,则返回的向量是行向量; 否则返回列向量。如果X不包含非零元素或是空数组,则返回一个空数组。 |
ind = find(X, k)
ind = find(X, k, 'first') |
最多返回与X的非零条目相对应的前k个索引。k必须是正整数,但它可以是任何数字数据类型。 |
ind = find(X, k, 'last') | 最多返回与X的非零条目相对应的最后k个索引。 |
[row,col] = find(X, ...) | 返回矩阵X中非零条目的行和列索引。使用稀疏矩阵时,此语法特别有用。 如果X是N>2的N维数组,col包含列的线性索引。 |
[row,col,v] = find(X, ...) | 返回X中非零条目的列或行向量v,以及行和列索引。如果X是逻辑表达式,则v是逻辑数组。 输出v包含通过评估表达式X获得的逻辑数组的非零元素。 |
islogical(A) | 确定输入是否为逻辑数组;如果A是逻辑数组,返回true,否则返回false。 如果A是从逻辑类派生的类的实例,它也返回true。 |
logical(A) | 将数值转换为逻辑;返回一个可用于逻辑索引或逻辑测试的数组。 |
true | 逻辑1(真) |
true(n) | 是一个n×n逻辑矩阵。 |
true(m, n) | 是一个mxn逻辑矩阵。 |
true(m, n, p, ...) | 是由逻辑1的逐列逐列数组。 |
true(size(A)) | 是与数组A大小相同的逻辑数组。 |
true(...,'like', p) | 是与逻辑阵列p相同的数据类型和稀疏性的逻辑阵列。 |
三、关系运算符
MATLAB关系运算符对数组的元素进行设置,将元素设置为逻辑1(真)的关系是真实的和逻辑0(假),它是两个阵列,可以返回一个相同大小的逻辑阵列间的比较。MATLAB关系运算符标和非标量数据上也能正常工作。MATLAB关系运算符如下表:
操作符 | 描述 |
---|---|
< | 小于 |
<= | 小于等于 |
> | 大于 |
>= | 大于等于 |
== | 等于 |
~= | 不等于 |
除了在上述的关系运算符,MATLAB提供下列命令/函数用于同样的目的:
函数 | 描述 |
---|---|
eq(a, b) | 测试a是否等于b |
ge(a, b) | 测试是否大于或等于B |
gt(a, b) | 测试a是否大于b |
le(a, b) | 测试a是否小于或等于b |
lt(a, b) | 测试a是否小于b |
ne(a, b) | 测试a是否不等于b |
isequal | 测试数组以获得相等性 |
isequaln | 测试数组相等,将NaN值视为相等 |
四、位运算符
MATLAB提供位运算,如'位','位或'和'位不操作,移位操作等各种函数。以下的表格显示了常用的按位运算:
函数 | 目的/作用 |
---|---|
bitand(a, b) | 整数a和b的逐位AND |
bitcmp(a) | a的位补码 |
bitget(a,pos) | 在指定位置pos中获取位,在整数数组A中 |
bitor(a, b) | 整数a和b的逐位OR |
bitset(a, pos) | 在某一位置上设置位 |
bitshift(a, k) | 返回向左移位k位,相当于乘以2k。k的负值对应于向右移位或除以2 | k | 并舍入到最接近的整数到负无穷大。任何溢出位都被截断。 |
bitxor(a, b) | 整数a和b的逐位异或 |
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(true),否则返回逻辑0(false)。输入A可以是向量,也可以是N-by-1或1-by-N的字符串数组。如果A和sort(A)的输出相等,则A被认为是排序的。 |
issorted(A, 'rows') | 如果二维矩阵A的行按排序顺序返回逻辑1(真),否则返回逻辑0(假)。 如果A和排序(A)的输出相等,则认为矩阵A被排序。 |
setdiff(A,B) | 设置两个数组的差值;返回不在B中的值。返回数组中的值按排序顺序排列。 |
setdiff(A,B,'rows') |
将每一行A和B行作为单个实体处理,并返回一个不在B中的行。返回的矩阵的行按排序顺序排列。
“行”选项不支持单元格数组。
|
setxor | 设置两个数组的异或 |
union | 设置两个数组的并集 |
unique | 数组中唯一的值 |