MATLAB - 運算子



運算子是一個符號,它告訴編譯器執行特定的數學或邏輯操作。MATLAB 主要用於對整個矩陣和陣列進行操作。因此,MATLAB 中的運算子同時作用於標量和非標量資料。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

^

矩陣冪。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 的陣列轉置。對於複數矩陣,這不會涉及共軛。

關係運算符

關係運算符也可以作用於標量和非標量資料。陣列的關係運算符在兩個陣列之間執行逐元素比較,並返回相同大小的邏輯陣列,其中關係為真的元素設定為邏輯 1(真),關係為假的元素設定為邏輯 0(假)。

下表顯示了 MATLAB 中可用的關係運算符:

顯示示例

序號 運算子和描述
1

<

小於

2

<=

小於或等於

3

>

大於

4

>=

大於或等於

5

==

等於

6

~=

不等於

邏輯運算子

MATLAB 提供兩種型別的邏輯運算子和函式:

  • 逐元素 - 這些運算子對邏輯陣列的對應元素進行運算。

  • 短路 - 這些運算子對標量和邏輯表示式進行運算。

逐元素邏輯運算子對邏輯陣列逐元素進行運算。符號 &、| 和 ~ 分別是邏輯陣列運算子 AND、OR 和 NOT。

短路邏輯運算子允許對邏輯運算進行短路。符號 && 和 || 分別是邏輯短路運算子 AND 和 OR。

顯示示例

按位運算

按位運算子對位進行運算,並執行逐位運算。&、| 和 ^ 的真值表如下:

p q p & q p | q p ^ q
0 0 0 0 0
0 1 0 1 1
1 1 1 1 0
1 0 0 1 1

假設 A = 60;B = 13;現在以二進位制格式,它們將如下所示:

A = 0011 1100

B = 0000 1101

-----------------

A&B = 0000 1100

A|B = 0011 1101

A^B = 0011 0001

~A  = 1100 0011

MATLAB 提供了各種用於按位運算的函式,例如“按位與”、“按位或”和“按位非”運算、移位運算等。

下表顯示了常用的按位運算:

顯示示例

函式 用途
bitand(a, b) 整數 ab 的按位與
bitcmp(a) a 的按位補碼
bitget(a,pos) 獲取整數陣列 a 中指定位置 pos 處的位
bitor(a, b) 整數 ab 的按位或
bitset(a, pos) 設定 a 的特定位置 pos 處的位
bitshift(a, k) 返回 a 向左移動 k 位的結果,相當於乘以 2k。k 的負值對應於向右移動位或除以 2|k| 並四捨五入到最接近負無窮大的整數。任何溢位位都會被截斷。
bitxor(a, b) 整數 ab 的按位異或
swapbytes 交換位元組順序

集合運算

MATLAB 提供了各種用於集合運算的函式,例如並集、交集和測試集合成員資格等。

下表顯示了一些常用的集合運算:

顯示示例

序號 函式和描述
1

intersect(A,B)

兩個陣列的集合交集;返回 A 和 B 共有的值。返回的值按排序順序排列。

2

intersect(A,B,'rows')

將 A 的每一行和 B 的每一行都視為單個實體,並返回 A 和 B 共有的行。返回矩陣的行按排序順序排列。

3

ismember(A,B)

返回一個與 A 大小相同的陣列,其中 A 的元素在 B 中找到的位置為 1(真)。在其他位置,它返回 0(假)。

4

ismember(A,B,'rows')

將 A 的每一行和 B 的每一行都視為單個實體,並返回一個向量,其中矩陣 A 的行也是 B 的行的位置為 1(真)。在其他位置,它返回 0(假)。

5

issorted(A)

如果陣列 A 中的元素按排序順序排列,則返回邏輯 1(真),否則返回邏輯 0(假)。輸入 A 可以是向量或 N×1 或 1×N 的字串單元格陣列。A 被認為是排序的,如果 A 和 sort(A) 的輸出相等。

6

issorted(A, 'rows')

如果二維矩陣 A 的行按排序順序排列,則返回邏輯 1(真),否則返回邏輯 0(假)。矩陣 A 被認為是排序的,如果 A 和 sortrows(A) 的輸出相等。

7

setdiff(A,B)

兩個陣列的集合差;返回 A 中不在 B 中的值。返回陣列中的值按排序順序排列。

8

setdiff(A,B,'rows')

將 A 和 B 的每一行都視為單個實體,並返回 A 中不在 B 中的行。返回矩陣的行按排序順序排列。

'rows' 選項不支援單元格陣列。

9

setxor

兩個陣列的集合異或

10

union

兩個陣列的集合並

11

unique

陣列中的唯一值

廣告

© . All rights reserved.