Matlab運算子


運算子是一個符號,它告訴編譯器執行特定的數學或邏輯操作。 MATLAB主要用於整個矩陣和陣列的操作。因此,MATLAB中的運算子既可用於標量資料也可用於非標量資料。MATLAB允許以下型別的基本操作 -

  • 算術運算子
  • 關係運算子
  • 邏輯運算子
  • 按位元運算子
  • 集合運算子

下面我們來一個一個地學習。

算術運算子

MATLAB允許兩種不同型別的算術運算 -

  • 矩陣算術運算
  • 陣列算術運算

矩陣算術運算與線性代數中定義的相同。在一維和多維陣列中,逐個元素執行陣列運算。
矩陣運算子和陣列運算子由句點符號(.)區分。 然而,由於對於矩陣和陣列的加減運算是相同的,因此對於這兩種情況,運算子相同。下表簡要說明了算術運算子 -

算術運算子範例程式碼

運算子 描述說明
+ 加法或一元加法運算。A + B表示相加儲存在變數AB中的值。AB必須具有相同的大小,除非是標量。 標量可以新增到任何大小的矩陣。
- 減法或一元減法運算。 A-B表示從A中減去B的值。AB必須具有相同的大小,除非是標量。可以從任何大小的矩陣中減去標量。
* 矩陣乘法。 C = A * B是矩陣AB的線性代數乘積。更準確地說,執行公式: ,對於非標量ABA的列數必須等於B的行數。標量可以乘以任何大小的矩陣。
.* 陣列乘法。 A .* B是陣列AB的逐個元素乘積。AB必須具有相同的大小,除非它們之一是標量。
/ 陣列乘法。A .* B是陣列AB的逐個元素乘積。AB必須具有相同的大小,除非它們之一是標量。
./ 陣列右除。A./B是具有元素A(i,j)/ B(i,j)的矩陣。 AB必須具有相同的大小,除非它們之一是標量。
\ 反斜槓或陣列左除。如果A是一個方陣,A \ Binv(A)* B大致相同,除了以不同的方式計算。如果An×n矩陣,B是具有n個分量的列向量或具有若干這樣的列的矩陣,則X = A \ B是方程AX = B的解。如果A是不規則或幾乎單數,將顯示警告訊息。
.\ 陣列左除。A .\ B是具有元素B(i,j)/ A(i,j)的矩陣。AB必須具有相同的大小,除非它們之一是標量。
^ 矩陣 X ^ pXP次冪,如果p是標量。 如果p是整數,則通過重複平方來計算冪值。 如果整數為負,則X首先倒置。 對於p的其他值,計算涉及特徵值和特徵向量,使得如果[V,D] = eig(X),則X ^ p = V * D. ^ p / V
.^ 陣列冪值, A ^ BB(i,j)A(i,j)的冪矩陣。AB必須具有相同的大小,除非它們之一是標量。
' 矩陣轉置。 'A的線性代數轉置。對於複數矩陣,這是復共軛轉置。
.' 陣列轉置。.'A的陣列轉置。對於複數矩陣,這不涉及共軛。

關係運算子

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

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

關係運算子範例程式碼

操作符 說明描述
< 小於
<= 小於或等於
> 大於
>= 大於或等於
== 等於
~= 不等於

邏輯運算子

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

  • 逐元素 - 這些運算子對邏輯陣列的相應元素進行操作。
  • 短路 - 這些運算子在標量和邏輯表示式上執行。

元素邏輯運算子在邏輯陣列上執行逐個元素。符號|?是邏輯陣列運算子ANDORNOT

短路邏輯運算子允許邏輯運算短路。符號&&||是邏輯短路運算子ANDOR

邏輯運算子範例程式碼

位運算

按位元運算子對位執行,並執行逐位運算。|^的真值表如下 -

假設A = 60B = 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的位與AND操作
bitcmp(a) a的位元二補數
bitget(a,pos) 在整數陣列a中,獲取指定的位置pos位位元組
bitor(a, b) 整數ab的逐位OR操作
bitset(a, pos) 設定在指定pos處的位位元組
bitshift(a, k) 返回向左移位k位元組,相當於乘以2^kk的負值對應於向右移位或除以`2^ k ` 並捨入到最接近的整數到負無窮大。任何溢位位都被截斷。
bitxor(a, b) 整數ab的逐位元組位XOR操作
swapbytes 交換位元組排序

集合操作

MATLAB為集合操作提供了各種功能,如聯合,交集和集合成員的測試等。

下表顯示了一些常用的集合操作 -

函式 描述
intersect(A,B) 設定兩個陣列的交集; 也就是返回AB共同的值。返回的值按排序順序排列。
intersect(A,B,’rows’) A的每一行和B的每一行視為單個實體,並返回AB兩者共同的行。返回矩陣的行按排序順序排列。
ismember(A,B) 返回與A相同大小的陣列,其中包含1(true),其中A的元素位於B中。其他地方返回0(false)
ismember(A,B,’rows’) A的每行和B的每一行視為單個實體,並返回一個包含1(true)的向量,其中矩陣A的行也是B行。其他返回0(false)
issorted(A) 如果A的元素按排序順序返回邏輯1(真),否則返回邏輯0(假)。輸入A可以是一個向量,也可以是N-by-11-by-N的字串陣列。 如果Asort(A)的輸出相等,則認為A被排序。
issorted(A, ‘rows’) 如果二維矩陣A的行按排序順序返回邏輯1(真),否則返回邏輯0(假)。 如果A和排序(A)的輸出相等,則認為矩陣A被排序。
setdiff(A,B) 設定兩個陣列的差異; 返回A中不在B中的值。返回的陣列中的值按排序順序排列。
setdiff(A,B,’rows’) A的每一行和B的每一行視為單個實體,並從不在B中的A返回行。返回的矩陣的行按排序順序排列。'rows'選項不支援單元格陣列。
setxor 設定兩個陣列的互斥或
union 設定兩個陣列的並集
unique 使陣列中的值唯一

以下是糾正/補充內容:

/陣列乘法。A .* B是陣列A和B的逐個元素乘積。A和B必須具有相同的大小,除非它們之一是標量。  提交時間:2019-08-12