2.3.1 算術運算
- 運算是在矩陣意義下進行的,單個數據的算術運算只是一種特例。
- MATLAB有兩類不同的算術指令運算:基本算術運算和點運算。
1.基本算數運算符
(1)矩陣的加減運算:
- 分別將矩陣A,B中對應位置的元素進行相加減然後得到新的運算後的矩陣;
ps:A,B矩陣必須是位數相同的。
(2)矩陣的乘法:
- A:mn的矩陣,B:nl的矩陣,A左乘 B所得的積爲一個m*l 的矩陣C
- 矩陣左乘的步驟:用A的第1行各個數與B的第1列各個數對應相乘後加起來,就是乘法結果中第1行第1列的數;以此類推
(注意:矩陣A的列數與矩陣 B 的行數相等)
(3)矩陣的除法:
- 除法分爲: 左除\和右除/
- 如果A是一個非奇異方陣,那麼A\B和B/A對應A的逆與B的左乘和右乘,即分別等價於命令inv(A)* B和B*inv(A)。
(4)矩陣的乘方:
- A^x
- 要求A爲方陣
- x爲標量。
(5)矩陣的轉置:
- ’ 表示對實數矩陣進行行列互換,而對複數矩陣進行共軛轉置。
- 操作符 .’ 表示對複數矩陣進行轉置。
2.點運算
- 點運算:運算符前面加點。
- 是指向量或者矩陣中對應位置的元素進行點對點的相關運算。同時要求兩個矩陣的維數必須相同。
ps: - “.+”與“+”、“.-”和“-”效果相同,故在MATLAB中並沒有定義“.+”和“.-”運算。
- A.\B相當於矩陣B中的每個元素除以矩陣A中對應元素的值,A./B則相當於矩陣A中的每個元素除以矩陣B中對應元素的值。
- 向量或矩陣與一個常數的運算相當於整個向量和矩陣的每一個元素都與該常數進行相應的運算。
A = [1 2 3;4 5 6; 1 1 0];
B = [1 5 8;2 4 7; 0 1 0];
C = A .* B
D = A * B
C =
1 10 24
8 20 42
0 1 0 %對應位置相乘
D =
5 16 22
14 46 67
3 9 15
2.3.2 關係運算
-
6種關係運算符:<(小於)、<=(小於或等於)、>(大於)、>=(大於或等於)、==(等於)、~=(不等於)。
-
關係運算符的運算法則爲:
-
當兩個比較量是標量時,直接比較兩數的大小。若關係成立,關係表達式結果爲1,否則爲0。
-
當參與比較的量是兩個維數相同的矩陣時,比較是對兩矩陣相同位置的元素按標量關係運算規則逐個進行,並給出元素比較結果。最終的關係運算的結果是一個維數與原矩陣相同的矩陣,它的元素由0或1組成。
-
當參與比較的一個是標量和矩陣時,則把標量與矩陣的每一個元素按標量關係運算規則逐個比較,並給出元素比較結果。最終的關係運算的結果是一個維數與原矩陣相同的矩陣,它的元素由0或1組成。
2.3.3 邏輯運算
- 3種邏輯運算符:&(與)、|(或)和~(非)。(對於數值的邏輯運算,與其他語言基本相同不再贅述)
-
若參與邏輯運算的是兩個同維矩陣,那麼運算將對矩陣相同位置上的元素按標量規則逐個進行。
-
若參與邏輯運算的一個是標量和矩陣,那麼運算將在標量與矩陣中的每個元素之間按標量規則逐個進行。
ps:在算術、關係、邏輯運算中,算術運算優先級最高,邏輯運算優先級最低。
- 邏輯函數。
- ①利用all函數可以測定矩陣所有元素是否非零,如果所有元素非零,則爲真。
- ②any函數可以測試出矩陣中是否含有非零值。
- ③find函數可以找出矩陣中的非零元素及其位置。
- ④exist函數可以測定文件是否存在,它可在裝入數據文件之前對數據文件作檢測。
- ⑤利用is*這一組函數可對矩陣進行各種檢測,其中isnan函數可從陣列中檢測出非數值(NaN)。當陣列中包含有NaN時,則基於這一陣列的任何函數值也爲NaN,因此在數據處理之前,一般應對數據進行分析,刪去包含有NaN的測量樣本
>> A=[1 0 2 0 5;5 1 0 5 2;0 4 5 0 5;1 2 5 0 4;5 0 5 3 0]
A =
1 0 2 0 5
5 1 0 5 2
0 4 5 0 5
1 2 5 0 4
5 0 5 3 0
>> B=ones(3,6)
B =
1 1 1 1 1 1
1 1 1 1 1 1
1 1 1 1 1 1
>> all(A)
ans =
0 0 0 0 0
>> all(B)
ans =
1 1 1 1 1 1
>> any(A)
ans =
1 1 1 1 1
>> any(B)
ans =
1 1 1 1 1 1
>> find(A)
ans =
1 2 4 5 7 8 9 11 13 14 15 17 20 21 22 23 24