運(yùn)算符是一個(gè)符號(hào),它告訴編譯器執(zhí)行特定的數(shù)學(xué)或邏輯操作。 MATLAB主要用于整個(gè)矩陣和陣列的操作。因此,MATLAB中的運(yùn)算符既可用于標(biāo)量數(shù)據(jù)也可用于非標(biāo)量數(shù)據(jù)。MATLAB允許以下類型的基本操作 -
下面我們來(lái)一個(gè)一個(gè)地學(xué)習(xí)。
MATLAB允許兩種不同類型的算術(shù)運(yùn)算 -
矩陣算術(shù)運(yùn)算與線性代數(shù)中定義的相同。在一維和多維數(shù)組中,逐個(gè)元素執(zhí)行數(shù)組運(yùn)算。
矩陣運(yùn)算符和數(shù)組運(yùn)算符由句點(diǎn)符號(hào)(.
)區(qū)分。 然而,由于對(duì)于矩陣和陣列的加減運(yùn)算是相同的,因此對(duì)于這兩種情況,運(yùn)算符相同。下表簡(jiǎn)要說(shuō)明了算術(shù)運(yùn)算符 -
運(yùn)算符 | 描述說(shuō)明 |
---|---|
+ |
加法或一元加法運(yùn)算。A + B 表示相加存儲(chǔ)在變量A 和B 中的值。A 和B 必須具有相同的大小,除非是標(biāo)量。 標(biāo)量可以添加到任何大小的矩陣。 |
- |
減法或一元減法運(yùn)算。 A-B 表示從A 中減去B 的值。A 和B 必須具有相同的大小,除非是標(biāo)量??梢詮娜魏未笮〉木仃囍袦p去標(biāo)量。 |
* |
矩陣乘法。 C = A * B 是矩陣A 和B 的線性代數(shù)乘積。更準(zhǔn)確地說(shuō),執(zhí)行公式: ,對(duì)于非標(biāo)量A 和B ,A 的列數(shù)必須等于B 的行數(shù)。標(biāo)量可以乘以任何大小的矩陣。 |
.* |
陣列乘法。 A .* B 是數(shù)組A 和B 的逐個(gè)元素乘積。A 和B 必須具有相同的大小,除非它們之一是標(biāo)量。 |
/ |
數(shù)組乘法。A .* B 是數(shù)組A 和B 的逐個(gè)元素乘積。A 和B 必須具有相同的大小,除非它們之一是標(biāo)量。 |
./ |
數(shù)組右除。A./B 是具有元素A(i,j)/ B(i,j) 的矩陣。 A 和B 必須具有相同的大小,除非它們之一是標(biāo)量。 |
\ |
反斜杠或數(shù)組左除。如果A 是一個(gè)方陣,A \ B 與inv(A)* B 大致相同,除了以不同的方式計(jì)算。如果A 是n×n 矩陣,B 是具有n 個(gè)分量的列向量或具有若干這樣的列的矩陣,則X = A \ B 是方程AX = B 的解。如果A是不規(guī)則或幾乎單數(shù),將顯示警告消息。 |
.\ |
陣列左除。A .\ B 是具有元素B(i,j)/ A(i,j) 的矩陣。A 和B 必須具有相同的大小,除非它們之一是標(biāo)量。 |
^ |
矩陣 X ^ p 是X 的P 次冪,如果p 是標(biāo)量。 如果p 是整數(shù),則通過(guò)重復(fù)平方來(lái)計(jì)算冪值。 如果整數(shù)為負(fù),則X 首先倒置。 對(duì)于p 的其他值,計(jì)算涉及特征值和特征向量,使得如果[V,D] = eig(X) ,則X ^ p = V * D. ^ p / V 。 |
.^ |
陣列冪值, A ^ B 是B(i,j) 到A(i,j) 的冪矩陣。A 和B 必須具有相同的大小,除非它們之一是標(biāo)量。 |
' |
矩陣轉(zhuǎn)置。 ' 是A 的線性代數(shù)轉(zhuǎn)置。對(duì)于復(fù)數(shù)矩陣,這是復(fù)共軛轉(zhuǎn)置。 |
.' |
數(shù)組轉(zhuǎn)置。.' 是A 的數(shù)組轉(zhuǎn)置。對(duì)于復(fù)數(shù)矩陣,這不涉及共軛。 |
關(guān)系運(yùn)算符也可以用于標(biāo)量和非標(biāo)量數(shù)據(jù)。數(shù)組的關(guān)系運(yùn)算符在兩個(gè)數(shù)組之間執(zhí)行逐個(gè)元素的比較,并返回相同大小的邏輯數(shù)組,如果為真,則元素設(shè)置為邏輯1(true)
,如果為假,則元素設(shè)置為邏輯0(false)
。
下表顯示了MATLAB中可用的關(guān)系運(yùn)算符:
操作符 | 說(shuō)明描述 |
---|---|
< |
小于 |
<= |
小于或等于 |
> |
大于 |
>= |
大于或等于 |
== |
等于 |
~= |
不等于 |
MATLAB提供兩種類型的邏輯運(yùn)算符和函數(shù):
元素邏輯運(yùn)算符在邏輯數(shù)組上運(yùn)行逐個(gè)元素。符號(hào)&
,|
和?
是邏輯數(shù)組運(yùn)算符AND
,OR
和NOT
。
短路邏輯運(yùn)算符允許邏輯運(yùn)算短路。符號(hào)&&
和||
是邏輯短路運(yùn)算符AND
和OR
。
按位運(yùn)算符對(duì)位執(zhí)行,并執(zhí)行逐位運(yùn)算。&
,|
和^
的真值表如下 -
假設(shè)A = 60
和B = 13
; 現(xiàn)在以二進(jìn)制格式,它們將如下所示:
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) | 整數(shù)a 和b 的位與AND 操作 |
||
bitcmp(a) | a 的比特補(bǔ)碼 |
||
bitget(a,pos) | 在整數(shù)數(shù)組a 中,獲取指定的位置pos 位字節(jié) |
||
bitor(a, b) | 整數(shù)a 和b 的逐位OR 操作 |
||
bitset(a, pos) | 設(shè)置在指定pos 處的位字節(jié) |
||
bitshift(a, k) | 返回向左移位k 字節(jié),相當(dāng)于乘以2^k 。 k 的負(fù)值對(duì)應(yīng)于向右移位或除以`2^ |
k | ` 并舍入到最接近的整數(shù)到負(fù)無(wú)窮大。任何溢出位都被截?cái)唷?/td> |
bitxor(a, b) | 整數(shù)a 和b 的逐字節(jié)位XOR 操作 |
||
swapbytes | 交換字節(jié)排序 |
MATLAB為集合操作提供了各種功能,如聯(lián)合,交集和集合成員的測(cè)試等。
下表顯示了一些常用的集合操作 -
函數(shù) | 描述 |
---|---|
intersect(A,B) | 設(shè)置兩個(gè)陣列的交集; 也就是返回A 和B 共同的值。返回的值按排序順序排列。 |
intersect(A,B,’rows’) | 將A 的每一行和B 的每一行視為單個(gè)實(shí)體,并返回A 和B 兩者共同的行。返回矩陣的行按排序順序排列。 |
ismember(A,B) | 返回與A 相同大小的數(shù)組,其中包含1(true) ,其中A 的元素位于B 中。其他地方返回0(false) 。 |
ismember(A,B,’rows’) | 將A 的每行和B 的每一行視為單個(gè)實(shí)體,并返回一個(gè)包含1(true) 的向量,其中矩陣A 的行也是B 行。其他返回0(false) 。 |
issorted(A) | 如果A 的元素按排序順序返回邏輯1 (真),否則返回邏輯0 (假)。輸入A 可以是一個(gè)向量,也可以是N-by-1 或1-by-N 的字符串?dāng)?shù)組。 如果A 和sort(A) 的輸出相等,則認(rèn)為A 被排序。 |
issorted(A, ‘rows’) | 如果二維矩陣A 的行按排序順序返回邏輯1 (真),否則返回邏輯0 (假)。 如果A 和排序(A) 的輸出相等,則認(rèn)為矩陣A 被排序。 |
setdiff(A,B) | 設(shè)置兩個(gè)數(shù)組的差異; 返回A 中不在B 中的值。返回的數(shù)組中的值按排序順序排列。 |
setdiff(A,B,’rows’) | 將A 的每一行和B 的每一行視為單個(gè)實(shí)體,并從不在B 中的A 返回行。返回的矩陣的行按排序順序排列。'rows' 選項(xiàng)不支持單元格數(shù)組。 |
setxor | 設(shè)置兩個(gè)數(shù)組的異或 |
union | 設(shè)置兩個(gè)數(shù)組的并集 |
unique | 使數(shù)組中的值唯一 |