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
廣告
© . All rights reserved.