運算子是一個符號,它告訴編譯器執行特定的數學或邏輯操作。 MATLAB主要用於整個矩陣和陣列的操作。因此,MATLAB中的運算子既可用於標量資料也可用於非標量資料。MATLAB允許以下型別的基本操作 -
下面我們來一個一個地學習。
MATLAB允許兩種不同型別的算術運算 -
矩陣算術運算與線性代數中定義的相同。在一維和多維陣列中,逐個元素執行陣列運算。
矩陣運算子和陣列運算子由句點符號(.
)區分。 然而,由於對於矩陣和陣列的加減運算是相同的,因此對於這兩種情況,運算子相同。下表簡要說明了算術運算子 -
運算子 | 描述說明 |
---|---|
+ |
加法或一元加法運算。A + B 表示相加儲存在變數A 和B 中的值。A 和B 必須具有相同的大小,除非是標量。 標量可以新增到任何大小的矩陣。 |
- |
減法或一元減法運算。 A-B 表示從A 中減去B 的值。A 和B 必須具有相同的大小,除非是標量。可以從任何大小的矩陣中減去標量。 |
* |
矩陣乘法。 C = A * B 是矩陣A 和B 的線性代數乘積。更準確地說,執行公式: ,對於非標量A 和B ,A 的列數必須等於B 的行數。標量可以乘以任何大小的矩陣。 |
.* |
陣列乘法。 A .* B 是陣列A 和B 的逐個元素乘積。A 和B 必須具有相同的大小,除非它們之一是標量。 |
/ |
陣列乘法。A .* B 是陣列A 和B 的逐個元素乘積。A 和B 必須具有相同的大小,除非它們之一是標量。 |
./ |
陣列右除。A./B 是具有元素A(i,j)/ B(i,j) 的矩陣。 A 和B 必須具有相同的大小,除非它們之一是標量。 |
\ |
反斜槓或陣列左除。如果A 是一個方陣,A \ B 與inv(A)* B 大致相同,除了以不同的方式計算。如果A 是n×n 矩陣,B 是具有n 個分量的列向量或具有若干這樣的列的矩陣,則X = A \ B 是方程AX = B 的解。如果A是不規則或幾乎單數,將顯示警告訊息。 |
.\ |
陣列左除。A .\ B 是具有元素B(i,j)/ A(i,j) 的矩陣。A 和B 必須具有相同的大小,除非它們之一是標量。 |
^ |
矩陣 X ^ p 是X 的P 次冪,如果p 是標量。 如果p 是整數,則通過重複平方來計算冪值。 如果整數為負,則X 首先倒置。 對於p 的其他值,計算涉及特徵值和特徵向量,使得如果[V,D] = eig(X) ,則X ^ p = V * D. ^ p / V 。 |
.^ |
陣列冪值, A ^ B 是B(i,j) 到A(i,j) 的冪矩陣。A 和B 必須具有相同的大小,除非它們之一是標量。 |
' |
矩陣轉置。 ' 是A 的線性代數轉置。對於複數矩陣,這是復共軛轉置。 |
.' |
陣列轉置。.' 是A 的陣列轉置。對於複數矩陣,這不涉及共軛。 |
關係運算子也可以用於標量和非標量資料。陣列的關係運算子在兩個陣列之間執行逐個元素的比較,並返回相同大小的邏輯陣列,如果為真,則元素設定為邏輯1(true)
,如果為假,則元素設定為邏輯0(false)
。
下表顯示了MATLAB中可用的關係運算子:
操作符 | 說明描述 |
---|---|
< |
小於 |
<= |
小於或等於 |
> |
大於 |
>= |
大於或等於 |
== |
等於 |
~= |
不等於 |
MATLAB提供兩種型別的邏輯運算子和函式:
元素邏輯運算子在邏輯陣列上執行逐個元素。符號&
,|
和?
是邏輯陣列運算子AND
,OR
和NOT
。
短路邏輯運算子允許邏輯運算短路。符號&&
和||
是邏輯短路運算子AND
和OR
。
按位元運算子對位執行,並執行逐位運算。&
,|
和^
的真值表如下 -
假設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) | 整數a 和b 的位與AND 操作 |
||
bitcmp(a) | a 的位元二補數 |
||
bitget(a,pos) | 在整數陣列a 中,獲取指定的位置pos 位位元組 |
||
bitor(a, b) | 整數a 和b 的逐位OR 操作 |
||
bitset(a, pos) | 設定在指定pos 處的位位元組 |
||
bitshift(a, k) | 返回向左移位k 位元組,相當於乘以2^k 。 k 的負值對應於向右移位或除以`2^ |
k | ` 並捨入到最接近的整數到負無窮大。任何溢位位都被截斷。 |
bitxor(a, b) | 整數a 和b 的逐位元組位XOR 操作 |
||
swapbytes | 交換位元組排序 |
MATLAB為集合操作提供了各種功能,如聯合,交集和集合成員的測試等。
下表顯示了一些常用的集合操作 -
函式 | 描述 |
---|---|
intersect(A,B) | 設定兩個陣列的交集; 也就是返回A 和B 共同的值。返回的值按排序順序排列。 |
intersect(A,B,’rows’) | 將A 的每一行和B 的每一行視為單個實體,並返回A 和B 兩者共同的行。返回矩陣的行按排序順序排列。 |
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-1 或1-by-N 的字串陣列。 如果A 和sort(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