Matlab掃盲12:運(yùn)算符的優(yōu)先級、不同數(shù)組大小的運(yùn)算兼容性
1.先看一個(gè)問題
在Matlab中編程計(jì)算:1>=1+1
結(jié)果是什么,2嗎?還是0?
2.概念
在Matlab中,可以任意組合使用算術(shù)運(yùn)算符、關(guān)系運(yùn)算符和邏輯運(yùn)算符等形成的表達(dá)式進(jìn)行運(yùn)算,Matlab進(jìn)行運(yùn)算處理的順序取決于每個(gè)運(yùn)算符的優(yōu)先級;
Matlab中運(yùn)算符的優(yōu)先級是指,當(dāng)多種運(yùn)算符組合使用時(shí),優(yōu)先運(yùn)算的順序,運(yùn)算符優(yōu)先級越高,將優(yōu)先運(yùn)算;
如果多個(gè)運(yùn)算符具有相同的優(yōu)先級(例如加法和減法),那么按照表達(dá)式從左到右進(jìn)行運(yùn)算處理;
3.優(yōu)先級順序
Matlab運(yùn)算符的優(yōu)先級規(guī)則,從高到低排序如下:
1)???括號 ()
2)???轉(zhuǎn)置 (.'), 冪(.^), 復(fù)共軛轉(zhuǎn)置 ('), 矩陣的冪(^)
3)? ?一元減的冪(.^-),一元加的冪(.^+),邏輯非的冪(.^~) 一元減的矩陣的冪(^-), 一元加的矩陣的冪(^+),邏輯非的矩陣的冪 (^~).
4)? ?一元加(+),一元減(-),邏輯非(~)
5)???乘法(.*),右除(./),左除(.\),矩陣的乘法(*),矩陣的右除(/),矩陣的左除 (\)
6)????加法 (+), 減法(-)
7)????冒號(:)
8)? ??關(guān)系運(yùn)算符(<),(<=),(>), (>=), (==), (~=)
9)????邏輯與(&)
10)???邏輯或(|)
11)???短路邏輯與(&&)
12)???短路邏輯或 (||)
4.程序示例
1>=1+1 %四則運(yùn)算高于邏輯運(yùn)算
(1>=1)+1
1:2+3? %加法高于冒號
(1:2)+3
1|1&0? %與優(yōu)先于或
(1|1)&0
5.基本運(yùn)算中數(shù)組大小的兼容性
這里兼容性是指,兩個(gè)大小不同的數(shù)組是否能夠進(jìn)行運(yùn)算,這里的兼容性運(yùn)算主要指數(shù)組的四則運(yùn)算;
我們知道,兩個(gè)完全相同大小的數(shù)組可以運(yùn)算;若運(yùn)算數(shù)其中之一是標(biāo)量的兩個(gè)大小不同的數(shù)組可以運(yùn)算;若一個(gè)是行向量,一個(gè)是列向量,可以運(yùn)算;若一個(gè)是矩陣,一個(gè)是具有相同行數(shù)的列向量,可以運(yùn)算;若一個(gè)是矩陣,一個(gè)是具有相同列數(shù)的行向量,可以運(yùn)算;若一個(gè)是矩陣,一個(gè)是具有相同行數(shù)和列數(shù)的三維數(shù)組,可以運(yùn)算;
說明,以上是針對2016以及更高版本的情況;
6.程序示例
a=[1 2;3 4]
b=[1 2]
c=[3;4]
a+a
a+2? %矩陣與標(biāo)量運(yùn)算:將標(biāo)量擴(kuò)展為前面矩陣的兼容性大小,再遵循數(shù)組四則運(yùn)算
a.*2
a*2
b+c? %先擴(kuò)展為兼容性大小:b復(fù)制行、c復(fù)制列再運(yùn)算
a+b
a+c
a.*b
a.*c
% a*b? %無法進(jìn)行兼容性運(yùn)算
a*c? %并非兼容性運(yùn)算,而是前面行等于后面列
d=cat(3,a,a)? %構(gòu)建三維數(shù)組
a+d? %不同維度的數(shù)組也可兼容性運(yùn)算
a.*d ?%可兼容性運(yùn)算
7.相關(guān)視頻


End