MATLAB - 算术运算



MATLAB允许两种不同类型的算术运算:

  • 矩阵算术运算
  • 数组算术运算

矩阵算术运算与线性代数中定义的相同。数组运算对一维和多维数组都逐元素执行。

矩阵运算符和数组运算符的区别在于句点 (.) 符号。但是,由于加法和减法运算对于矩阵和数组都是相同的,因此两种情况下的运算符相同。

下表简要描述了运算符:

序号 运算符和描述
1

+

加法或一元加。A+B 将变量 A 和 B 中存储的值相加。A 和 B 必须具有相同的尺寸,除非其中一个是标量。标量可以加到任何尺寸的矩阵。

2

-

减法或一元减。A-B 从 A 中减去 B 的值。A 和 B 必须具有相同的尺寸,除非其中一个是标量。标量可以从任何尺寸的矩阵中减去。

3

*

矩阵乘法。C = A*B 是矩阵 A 和 B 的线性代数乘积。更准确地说,

Matrix Multiplication

对于非标量 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.' 是 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 还提供以下用于类似目的的命令/函数:

序号 函数和描述
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 次差分函数。如果阶数 n 等于或超过维度 dim 的长度,则 diff 返回一个空数组。

20

prod(A)

数组元素的乘积;返回 A 的数组元素的乘积。

  • 如果 A 是一个向量,则 prod(A) 返回元素的乘积。

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

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

  • 如果 A 是一个多维数组,则 prod(A) 沿第一个非单一维度运算,并返回一个乘积数组。此维度的尺寸减小到 1,而所有其他维度的尺寸保持不变。

如果输入 A 为单精度,则 prod 函数计算并返回 B 为单精度。对于所有其他数值和逻辑数据类型,prod 计算并返回 B 为双精度。

21

prod(A,dim)

返回沿维度 dim 的乘积。例如,如果 A 是一个矩阵,prod(A,2) 是一个列向量,包含每一行的乘积。

22

prod(___,datatype)

进行乘法运算并返回指定数据类型 datatype 的数组。

23

sum(A)

  • 数组元素的和;返回沿数组不同维度的和。如果 A 为浮点数(即双精度或单精度),则 B 原生累加(即与 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 的数据类型为单精度或整数类型。对于整数类型,这是默认值。

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 的负数舍入到最接近的负整数。

matlab_operators.htm
广告