您好,登錄后才能下訂單哦!
本系列教程來源于出版設(shè)計(jì)《基于MATLAB編程基礎(chǔ)與典型應(yīng)用書籍》,如涉及版權(quán)問題,請(qǐng)聯(lián)系:156204968@qq.com。 出版社:人民郵電出版社, 頁數(shù):525。
本系列教程目前基于MATLABR2006a,可能對(duì)于更高級(jí)版本的功能和函數(shù)有差異,教程中如有問題,請(qǐng)聯(lián)系:156204968@qq.com
###3.1.8 矩陣和數(shù)組運(yùn)算比較 在進(jìn)行矩陣和數(shù)組運(yùn)算的時(shí)候,要認(rèn)識(shí)到矩陣和數(shù)組類似運(yùn)算的區(qū)別,兩種運(yùn)算指令形式和實(shí)質(zhì)內(nèi)涵的異同見表3.3。其中S為標(biāo)量,A、B為矩陣。 表3.3 矩陣和數(shù)組運(yùn)算對(duì)比表 |
數(shù)組運(yùn)算 | 矩陣運(yùn)算 | |
---|---|---|---|
命令 | 含義 | 命令 | 含義 |
A+B |
對(duì)應(yīng)元素相加 | A+B |
與數(shù)組運(yùn)算相同 |
A-B |
對(duì)應(yīng)元素相減 | A-B |
與數(shù)組運(yùn)算相同 |
S.*B |
標(biāo)量S分別與B元素的積 | S*B |
與數(shù)組運(yùn)算相同 |
A.*B |
數(shù)組對(duì)應(yīng)元素相乘 | A*B |
內(nèi)維相同矩陣的乘積 |
S./B |
S分別被B的元素左除 | S\B |
B矩陣分別左除S |
A./B |
A的元素被B的對(duì)應(yīng)元素除 | A/B |
矩陣A右除B即A的逆陣與B相乘 |
B.\A |
結(jié)果一定與上行相同 | B\A |
A左除B(一般與上行不同) |
A.^S |
A的每個(gè)元素自乘S次 | A^S |
A矩陣為方陣時(shí),自乘S次 |
A.^S |
S為小數(shù)時(shí),對(duì)A各元素分別求非整數(shù)冪,得出矩陣 | A^S |
S為小數(shù)時(shí),方陣A的非整數(shù)乘方 |
S.^B |
分別以B的元素為指數(shù)求冪值 | S^B |
B為方陣時(shí),標(biāo)量S的矩陣乘方 |
A.’ |
非共軛轉(zhuǎn)置,相當(dāng)于conj(A’) | A’ |
共軛轉(zhuǎn)置 |
exp(A) |
以自然數(shù)e為底,分別以A的元素為指數(shù)求冪 | expm(A) |
A的矩陣指數(shù)函數(shù) |
log(A) |
對(duì)A的各元素求對(duì)數(shù) | logm(A) |
A的矩陣對(duì)數(shù)函數(shù) |
sqrt(A) |
對(duì)A的各元素求平方根 sqrtm(A) |
A的矩陣平方根函數(shù) | |
f(A) |
求A各個(gè)元素的函數(shù)值 | funm(A,’FUN’) |
矩陣的函數(shù)運(yùn)算 |
注意:(1)funm(A,’FUN’)要求A必須是方陣,“FUN”為矩陣運(yùn)算的函數(shù)名。
(2)在執(zhí)行數(shù)組與數(shù)組之間的運(yùn)算的時(shí)候,參與運(yùn)算的數(shù)組必須同維,運(yùn)算所得的結(jié)果數(shù)組也總與原數(shù)組同維。
###3.1.9 關(guān)系操作和邏輯操作
在使用MATLAB語言進(jìn)行程序設(shè)計(jì)時(shí),經(jīng)常會(huì)涉及到程序流程的控制,此時(shí)需要對(duì)一些問題作出一些判斷,為此MATLAB提供了關(guān)系操作、邏輯計(jì)算以及一些相關(guān)的運(yùn)算函數(shù)。
(1)關(guān)系運(yùn)算
關(guān)系操作符有:<(小于關(guān)系)、<=(小于或等于關(guān)系)、>(大于關(guān)系)、>=(大于或等于關(guān)系)、= =(等于關(guān)系)、~=(不等于關(guān)系)。
關(guān)系運(yùn)算規(guī)則為:
【例3.20】關(guān)系運(yùn)算
在命令窗口中輸入以下內(nèi)容,生成矩陣A和矩陣B:>> A=[1 2 3 4 5;5 3 4 8 5;6 8 7 6 9;2 6 8 2 1;2 7 9 3 9];
>> B=[5 3 4 8 5;6 8 7 6 9;2 6 8 2 1;2 7 9 3 9;4 5 6 7 8];
①判斷矩陣A、B對(duì)應(yīng)的元素是否相同,并將結(jié)果返回給矩陣C1。在命令窗口中輸入:>> C1=A==B %A、B矩陣對(duì)應(yīng)元素相等的返回1,否則返回0
②判斷矩陣A的元素是否大于等于矩陣B對(duì)應(yīng)的元素,并將結(jié)果返回給矩陣C2。在命令窗口中輸入:>> C2=A>=B %A、B矩陣對(duì)應(yīng)元素A大于等于B的返回1,否則返回0
③判斷矩陣A、B對(duì)應(yīng)的元素是否不相同,并將結(jié)果返回給矩陣C3。在命令窗口中輸入:>> C3=A~=B %A、B矩陣對(duì)應(yīng)元素相等的返回0,否則返回1
(2) 邏輯運(yùn)算
邏輯操作符有:&(與)、|(或)、~(非)和xor(異或)。在邏輯運(yùn)算中,非0元素表示真(1),0元素表示假(0),邏輯運(yùn)算的結(jié)果為0或1,邏輯運(yùn)算法則具體見表3.5所示。
表3.5 邏輯運(yùn)算
a | b | a&b | a or b | ~a | xor(a,b) |
---|---|---|---|---|---|
0 | 0 | 0 | 0 | 1 | 0 |
0 | 1 | 0 | 1 | 1 | 1 |
1 | 0 | 0 | 1 | 0 | 1 |
1 | 1 | 1 | 1 | 0 | 0 |
邏輯操作的需要滿足以下運(yùn)算規(guī)則:
除了上面的邏輯操作符外,MATLAB還提供了&&(先決與)邏輯運(yùn)算符和||(先決或)邏輯運(yùn)算符。
&&(先決與)邏輯運(yùn)算符是當(dāng)該運(yùn)算符的左邊為1(真)時(shí),繼續(xù)執(zhí)行該運(yùn)算符右邊的運(yùn)算,并執(zhí)行與邏輯運(yùn)算;否則,不再執(zhí)行該運(yùn)算符右邊的運(yùn)算,并立即給出運(yùn)算的結(jié)果為0(假)。
||(先決或)邏輯運(yùn)算符是當(dāng)該運(yùn)算符的左邊為1(真)時(shí),就不需要繼續(xù)執(zhí)行該符號(hào)右邊的運(yùn)算,并立即得出該邏輯運(yùn)算結(jié)果為1(真);否則,就要繼續(xù)執(zhí)行該符號(hào)右邊的運(yùn)算,并執(zhí)行或邏輯運(yùn)算。
【例3.21】邏輯運(yùn)算
在命令窗口中輸入以下內(nèi)容,生成矩陣A和矩陣B:>> A=[1 2 3 4 5;5 3 4 8 5;6 8 7 6 9;2 6 8 2 1;2 7 9 3 9];
>> B=[5 3 4 8 5;6 8 7 6 9;2 6 8 2 1;2 7 9 3 9;4 5 6 7 8];
①若計(jì)算A和B之間邏輯與的值,并將結(jié)果返回給矩陣C1。在命令窗口中輸入:>> C1=A&B %計(jì)算A和B之間邏輯與的值
②若計(jì)算A和B之間邏輯或的值,并將結(jié)果返回給矩陣C2。在命令窗口中輸入:>> C2=A|B %計(jì)算A和B之間邏輯或的值
③若計(jì)算A的邏輯非,并將結(jié)果返回給矩陣C3。在命令窗口中輸入:>> C3=~A %計(jì)算A的邏輯非
④若計(jì)算A和B之間邏輯異或,并將結(jié)果返回給矩陣C4。在命令窗口中輸入:>> C4=xor(A,B) %計(jì)算A和B之間邏輯異或
【例3.22】先決邏輯運(yùn)算
在命令窗口中輸入以下變量a、b和c:>> a=0;
>> b=5;
>> c=10;
①進(jìn)行先決與操作,在命令窗口中輸入以下內(nèi)容:>> (a~=0)&&(b<c)
運(yùn)算結(jié)果如下:ans =<br/>0
②進(jìn)行先決與操作,在命令窗口中輸入以下內(nèi)容:>> (a~=0)||(b<c)
運(yùn)算結(jié)果如下:ans =<br/>1
(3)邏輯函數(shù)運(yùn)算
MATLAB中提供的一些函數(shù)返回的結(jié)果為真(1)和假(0),這樣的函數(shù)包括關(guān)系邏輯函數(shù)、工作狀態(tài)判斷函數(shù)、特殊數(shù)據(jù)判斷函數(shù)和數(shù)據(jù)類型函數(shù)。表3.6所示為關(guān)系邏輯函數(shù)以及對(duì)應(yīng)的功能描述。
表3.6 關(guān)系邏輯函數(shù)
函數(shù)名 | 功能 | 函數(shù)名 | 功能 |
---|---|---|---|
all(A) |
判斷A的列向量元素是否全非0,全非0則為1 | isnan(A) |
判斷A的各元素值是否為NAN,是則為1 |
any(A) |
判斷A的列向量元素中是否有非0元素,有則為1 | isnumeric(A) |
判斷數(shù)組A的元素是否全為數(shù)值型數(shù)組 |
isequal(A,B) |
判斷A、B對(duì)應(yīng)元素是否全相等,相等為1 | isreal(A) |
判斷數(shù)組A的元素是否全為實(shí)數(shù),是則為1 |
isempty(A) |
判斷A是否為空矩陣,為空則為1,否則為0 | isprime(A) |
判斷A的各元素值是否為質(zhì)數(shù),是則為1 |
isfinite(A) |
判斷A的各元素值是否有限,是則為1 | isspace(A) |
判斷A的各元素值是否為空格,是則為1 |
isinf(A) |
判斷A的各元素值是否無窮大,是則為1 | find(A) |
尋找A數(shù)組非0元素的下標(biāo)和值 |
(4)運(yùn)算符優(yōu)先級(jí)
MATLAB提供了多種運(yùn)算符號(hào),各種運(yùn)算符執(zhí)行的先后順序是根據(jù)其所具有的優(yōu)先級(jí)來決定的。下面列出了各種運(yùn)算符的優(yōu)先級(jí)順序,由上至下優(yōu)先級(jí)遞減,每行的優(yōu)先級(jí)相同:
a) 括號(hào)()
b) '(矩陣轉(zhuǎn)置)、^ (矩陣冪)和.'(數(shù)組轉(zhuǎn)置)、.^(數(shù)組冪)
c) ~(邏輯非)、代數(shù)正+、代數(shù)負(fù)-
d) (乘)、/(左除)、(右除)和.(點(diǎn)乘)、./(點(diǎn)左除)、.(點(diǎn)右除)
e) +、-(加減)
f) 冒號(hào):
g) <、<=、>、>=、~=
h) &(邏輯與)
i) |(邏輯或)
j) &&(先決與)
k) ||(先決或)
作者:德特?cái)?shù)據(jù)
聯(lián)系方式:156204968@qq.com
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。