MATLAB-算术运算

时间:2023-02-01 20:55:40

✅作者简介:热爱科研的算法开发者,Python、Matlab项目可交流、沟通、学习。

????个人主页:算法工程师的学习日志

MATLAB的算术运算有两种不同类型:1)矩阵算术运算;2)阵列算术运算。

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的转置,对于复数矩阵,这不涉及共轭。

举例说明

下面的例子显示使用标量数据的算术运算符。创建一个脚本文件,用下面的代码:

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.5000
g =
2
z =
343

MATLAB算术运算功能

除了上述列举的一些算术运算符,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的元素的累积乘积的向量。
  • 如果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,向下舍入到最接近的负整数。