MATLAB 算术运算
MATLAB允许两种不同类型的算术运算 –
- 矩阵算术运算
- 数组算术运算
矩阵算术运算与线性代数中定义的相同。数组操作按元素逐个执行,对一维和多维数组都适用。
矩阵运算符和数组运算符通过句点(.)符号进行区分。然而,由于矩阵和数组的加法和减法运算相同,所以运算符对两种情况都相同。
下表简要描述了这些运算符 –
序号 | 运算符和描述 |
---|---|
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 | ^ 矩阵的幂。X^p 表示 X 的 p 次幂,如果 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.’是A的数组转置。对于复数矩阵,这不涉及共轭。 |
示例
以下示例展示了对标量数据使用算术运算符的用法。创建一个包含以下代码的脚本文件 –
a = 10;
b = 20;
c = a + b
d = a - b
e = a * b
f = a / b
g = a \ b
x = 7;
y = 3;
z = x ^ y
当您运行该文件时,会产生以下结果−
c = 30
d = -10
e = 200
f = 0.50000
g = 2
z = 343
算术操作的函数
除了上述算术运算符之外,MATLAB还提供了以下命令/函数用于类似的目的-
Sr.No. | 功能与描述 |
---|---|
1 | uplus(a) 一元加法;将a的值增加 |
2 | plus(a,b) 加法;返回a + b的结果 |
3 | uminus(a) 一元减法;将a的值减少 |
4 | minus(a, b) 减法;返回a – b的结果 |
5 | times(a, b) 数组相乘;返回a.*b的结果 |
6 | mtimes(a, b) 矩阵乘法;返回a*b的结果 |
7 | rdivide(a, b) 右除法;返回a./b的结果 |
8 | ldivide(a, b) 左元素除法; 返回 a.\ b |
9 | mrdivide(A, B) 解线性方程组 xA = B,得到 x |
10 | mldivide(A, B) 解线性方程组 Ax = B,得到 x |
11 | power(a, b) 数组的次方操作; 返回 a.^b |
12 | mpower(a, b) 矩阵的次方操作; 返回 a ^ b |
13 | cumprod(A) 累积乘法; 返回与数组 A 相同大小的数组,其中包含累积乘积。 如果 A 是一个向量,则 cumprod(A) 返回一个向量,其中包含 A 的元素的累积乘积。 如果 A 是一个矩阵, 那么 cumprod(A) 返回一个包含 A 的每一列的累积乘积的矩阵。 如果 A 是一个多维数组, 那么 cumprod(A) 在第一个非单例维度上进行操作。 |
14 | cumprod(A, dim) 返回沿着维度 dim 的累积乘积。 |
15 | cumsum(A) 累积和;返回一个包含累积和的数组 A。 如果 A 是一个向量, 那么 cumsum(A) 返回一个包含 A 的元素累积和的向量。 如果 A 是一个矩阵, 那么 cumsum(A) 返回一个包含 A 的每一列的累积和的矩阵。 如果 A 是一个多维数组, 那么 cumsum(A) 在第一个非单例维度上进行操作。 |
16 | cumsum(A, dim) 返回沿着维度 dim 的元素的累积和。 |
17 | 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,:)] |
18 | diff(X,n) 对diff递归应用n次,得到第n次差分。 |
19 | diff(X,n,dim) 它是沿着由标量dim指定的维度计算的第n个差分函数。如果order n大于或等于维度dim的长度,则diff返回一个空数组。 |
20 | prod(A) 数组元素的乘积;返回A的数组元素的乘积。 如果A是一个向量,则prod(A)返回元素的乘积。 如果A是一个非空矩阵,则prod(A)将A的列视为向量,并返回每列的乘积的行向量。 如果A是一个空的0×0矩阵,则prod(A)返回1。 如果A是一个多维数组,则prod(A)沿着第一个非单例维度操作,并返回一个乘积数组。该维度的大小缩小到1,而所有其他维度的大小保持不变。 如果输入A是单精度数据类型,prod函数计算并返回B作为单精度。对于其他数值和逻辑数据类型,prod函数计算并返回B作为双精度。 |
21 | prod(A,dim) 返回沿着维度dim的乘积。例如,如果A是一个矩阵,prod(A,2)会返回一个包含每行乘积的列向量。 |
22 | prod(___,datatype) 计算并返回一个指定数据类型的数组。 |
23 | sum(A) 数组元素的求和;返回数组不同维度的求和结果。如果A是浮点数,即双精度或者单精度,B以与A相同的数据类型进行累积。如果A不是浮点数,B以双精度进行累积,并且B的数据类型是双精度。 如果A是一个向量,则sum(A)返回元素的和。 如果A是一个矩阵,则sum(A)将A的每列视为向量,返回每列的和构成的行向量。 如果A是多维数组,则sum(A)将沿着第一个非单一维度的值视为向量,返回一个由行向量构成的数组。 |
24 | sum(A,dim) 根据标量dim指定的维度对A进行求和。 |
25 | sum(…, ‘double’) sum(…, dim,’double’) 以双精度进行加法运算,并返回双精度类型的结果,即使A的数据类型为single或整数数据类型也是如此。这是整数数据类型的默认设置。 |
26 | sum(…, ‘native’) sum(…, dim,’native’) 以矩阵A的原生数据类型执行加法操作,并返回相同数据类型的结果。这是单精度和双精度的默认值。 |
27 | ceil(A) 向正无穷取整;将矩阵A的元素四舍五入到最接近且大于等于A的整数。 |
28 | fix(A) 向零取整 |
29 | floor(A) 向负无穷取整;将矩阵A的元素四舍五入到最接近且小于等于A的整数。 |
30 | idivide(a, b) idivide(a, b,’fix’) 整数除法带有取整选项;与a./b相同,只是小数商被四舍五入到最接近且大于等于零的整数。 |
31 | idivide(a,b,’round’) 将分数商四舍五入到最近的整数。 |
32 | idivide(A,B,’floor’) 将分数商向负无穷舍入到最近的整数。 |
33 | idivide(A,B,’ceil’) 将分数商向正无穷舍入到最近的整数。 |
34 | 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相同 |
35 | 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相同 |
36 | round(X) 四舍五入到最近的整数;将X的元素四舍五入到最近的整数。具有小数部分为0.5的正元素向上舍入到最近的正整数。具有小数部分为-0.5的负元素向下舍入到最近的负整数。 |