MATLAB运算符

一、算数运算符

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相同大小的数组。
  • 如果A是向量,则cumprod(A)返回一个包含A的元素的累积乘积的向量。

    扫描二维码关注公众号,回复: 2191413 查看本文章
  • 如果A是矩阵,则cumprod(A)返回一个矩阵,其中包含A的每一列的累积乘积。

  • 如果A是一个多维数组,那么cumprod(A)将沿着第一个非正整数维。

cumprod(A, dim) 沿维 dim 返回返回累积乘积。
cumsum(A)
累加总和;返回包含累积和的数组A
  • 如果A是向量,则cumsum(A)返回一个包含A的元素的累积和的向量。

  • 如果A是矩阵,则cumsum(A)返回一个矩阵,其中包含A的每列的累积和。

  • 如果A是一个多维数组,那么cumsum(A)将沿着第一个非整数维度起作用。

cumsum(A, dim) 返回沿着dim的元素的累积和。
diff(X)
差分和近似导数;计算x相邻元素之间的差异。
  • 如果X是向量,则diff(X)返回相邻元素之间的差异的向量,比X短一个元素:[X(2)-X(1)X(3)-X(2)... X(N)-X(N-1)]

  • 如果X是一个矩阵,则diff(X)返回行差的矩阵:[X(2:m,...)-X(1:m-1,:)]

diff(X,n) 递归应用n次,导致第n个差异。
diff(X,n,dim) 它是沿标量dim指定的维数计算的第n个差分函数。 如果order n等于或超过Dim的长度,diff将返回一个空数组。
prod(A)
数组元素的乘积;返回A数组元素的乘积。
  • 如果A是向量,则prod(A)返回元素的乘积。

  • 如果A是非空矩阵,则prod(A)将A的列作为向量,并返回每列乘积的行向量。

  • 如果A是一个空的0-by-0矩阵,则prod(A)返回1。

  • 如果A是一个多维数组,那么prod(A)将沿着第一个非子集维度行为并返回一个乘积数组。 该维数的尺寸减小到1,而所有其他维数的尺寸保持不变。

如果输入A为单个,则prod函数计算并返回B为单个;对于所有其他数字和逻辑数据类型,prod函数计算并返回B为double。
prod(A,dim) 沿dim维度返回乘积。 例如,如果A是矩阵,则prod(A,2)是包含每一行的乘积的列向量。
prod(___,datatype) 在数据类型指定的类中乘以并返回一个数组。
sum(A)
  • 数组元素的总和;返回数组的不同维度的和。如果A是浮动的,那么是双倍或单个,B是本地累加的,它与A相同,B与A具有相同的类。如果A不是浮动的,则B被累加为双,B具有类double。

  • 如果A是向量,则sum(A)返回元素的总和。

  • 如果A是矩阵,则sum(A)将A的列作为向量,返回每列的和的行向量。

  • 如果A是一个多维数组,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)。

请注意:

  • mod(X,0) 是 X

  • mod(X,X) 是 0

  • 对于 X = Y 和 Y = 0的 mod(X,Y)具有与Y相同的符号。

rem (X,Y)
除法之后的余数;返回X - n.* Y,其中n = fix(X./Y)。 如果Y不是整数,并且商X / Y在整数的舍入误差内,则n是整数。 输入X和Y必须是相同大小的真实数组或实数标量(提供Y〜= 0)。
请记住:
  • rem(X,0) 是 NaN

  • X〜= 0的rem(X,X)为0

  • 对于 X~=Y 和 Y~=0 的rem(X,Y)与X具有相同的符号。

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的所有数组元素是否为非零或真。
  • 如果A是向量,则如果所有元素都为非零,则所有(A)返回逻辑1(真),如果一个或多个元素为零,则返回逻辑0(假)。

  • 如果A是非空矩阵,则所有(A)将A的列视为向量,返回逻辑1和0的行向量。

  • 如果A是空的0x0矩阵,则全部(A)返回逻辑1(真)。

  • 如果A是一个多维数组,则所有(A)都沿着第一个非指定维度行事,并返回一个逻辑值数组。 该尺寸的尺寸减小到1,而所有其他尺寸的尺寸保持不变。这个维度的大小减少到1,而其他所有维度的尺寸保持不变。

all(A, dim) 通过标量dim沿着维数A的维度进行测试。
any(A)
确定数组元素是否为非零;测试数组中不同维度的元素是否为非零数字,或是逻辑1(真)。 任何函数忽略NaN(不是数字)的条目。
  • 如果A是向量,任何(A)如果A的任何元素是非零数或逻辑1(真),则返回逻辑1(真),如果所有元素为零,则返回逻辑0(假)。

  • 如果A是非空矩阵,则任何(A)将A的列视为向量,返回逻辑1和0的行向量。

  • 如果A是一个空的0x0矩阵,任何(A)返回逻辑0(假)。

  • 如果A是一个多维数组,则任何(A)都沿着第一个非整数维进行操作,并返回一个逻辑值数组。该维度的尺寸减小到1,而所有其他维度的尺寸保持不变。

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 数组中唯一的值

猜你喜欢

转载自blog.csdn.net/SuMFLOWERS/article/details/81053331
今日推荐