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