MATLAB 第二章 陣列運算及陣列化程式設計
一、陣列的訪問與尋訪
1.建立一維陣列變數
法1:逐個元素輸入法
- 所有的向量元素必須在操作符“[ ]”之內
- 向量元素間用空格或逗號分開。
- 輸入元素可以是整數、變數、算式或複數
建立陣列(行向量)a=[1 3 pi 3+5i]
a=[1 3 pi 3+5*i] %or a=[1, 3, pi, 3+5*i]
a= 1.0000 3.0000 3.1416 3.0000 + 5.0000i
法2:使用冒號操作符
通過設定開始和結束元素,以及元素之間的間隔 ,三者之間用冒號分隔 x=Start:Increment:End
Start表示向量x的第一個元素;
向量x的所有元素不能大於End ;
Increment是元素之間的間隔,可正可負。若負,則必須Start>End;若正,則必 須Start<End,否則建立的為空向量。
若Increment=1,則可簡寫為:x=Start:End
法3:定數線性取樣法
x= linspace(x1, x2, n)
在設定的“總點數”下,均勻取樣生成一維由n個元素組成的行向量;
x1與x2之間元素的間隔=(x2-x1)/(n-1)。
如果忽略引數n,則系統預設生成100個元素的行向量。
列向量的建立
逐個元素輸入法,使用分號“;”分割行,行向量採用逗號或空格。
2.建立二維陣列變數
法1:逐個輸入
- 所有的元素必須在操作符“[ ]”之內
- 行與行之間須用分號“;” 間隔,也可以在分行處用回車鍵間隔;
- 行內元素用空格或逗號“,”間隔。
- 輸入元素可以是整數、變數、算式或複數
法2:函式方法
法3:變數編輯器
法4:M檔案
當陣列較大或者比較複雜時,將建立陣列的指令存入M檔案中,下次執行M檔案即可在記憶體中生成陣列。
3.陣列元素的編址
全下標編址
對於二維陣列來說,“全下標”標識由兩個下標組成:行下標,列下標。
指出是“第幾行,第幾列”的元素。
單下標編址
用一個下標來表明元素在陣列的位置。
一維編號:先把二維陣列的所有列,按先左後右的次序、首尾相接排成“一維長列”;然後,自上往下對元素位置進行編號。
轉換關係
以(m×n)的二維陣列A為例,若“全下標”元素位置是“第r行,第c列”,那麼相應的“單下標”為l=(c-1) ×m+r。
MATLAB有兩個指令可實現以上表示方法間的轉換:
sub2ind 根據全下標換算出單下標。
Ind2sub 根據單下標換算出全下標。
4.陣列元素的尋訪
法1:全下標尋訪
冒號表示所在行或列上的全部元素。
法2:單下標尋訪
採用單個“一維行或列陣列”尋訪元素。
首先將陣列生成一個一維陣列,然後進行尋訪。
法3:邏輯尋訪法
前兩種方法尋訪前都知道被尋訪元素的具體位置,然後採用全下標(單下標)方法根據元素下標來尋訪元素。
邏輯尋訪法則根據“條件”尋訪元素的位置,也稱為“邏輯1”尋訪。
二、陣列構建技法綜合
對已有陣列進行修改和擴充套件操作
三、陣列運算與矩陣運算
/:右除,A/B表示矩陣A乘以矩陣B的逆。
\:左除, A\B表示矩陣A的逆乘以B。
./:右除, A./B表示陣列A中的每個元素除以陣列B的對應的元素。
.\:左除, A.\B表示陣列B中的每個元素除以陣列A中對應的元素。
四、多維陣列與複數陣列
陣列的第一維稱為行,第二維稱為列,第三維稱為頁,第四維稱為箱…
建立方法
法1:直接通過全下標元素賦值方式建立多維陣列,按頁賦值
法2:函式法
由函式ones, zeros, rand, randn直接建立標準多維陣列;
常用指令
四、非數與空陣列
1.非數
按IEEE規定,0/0,∞/∞,0×∞等運算都會產生非數。該非數在MATLAB中用NaN或nan記述。
非數的性質
- NaN參與運算所得的結果也是NaN,即具有傳遞性
- 非數沒有大小概念,因此不能比較兩個非數的大小
非數的作用
- 真實記述0/0,∞/∞,0×∞運算的結果;
- 避免可能因0/0,∞/∞,0×∞運算而造成程式執行的中斷;
- 在資料視覺化中,用來裁剪圖形。
2.空陣列
“空”陣列是MATLAB為操作和表述需要而專門設計的一種陣列。
有一個維度是0的陣列即為空陣列
重要:空陣列不是全0陣列
空陣列不佔據儲存空間,但是他是存在的
“空”陣列的作用:
對於計算結果中的“空”可以合理地解釋“所得結果的含義”;
運用“空”陣列對其他非空陣列賦值,可以改變陣列的大小,但不能改變陣列的維數。
不能使用“全下標”方式刪除單個元素
五、關係操作和邏輯操作
1.關係運算
Matlab提供了6種關係運算符:<、>、<=、>=、==、~=(不等於)
運演算法則
2.邏輯運算
Matlab提供了3種邏輯運算子:&(與)、|(或)、~(非)
運演算法則
邏輯運算子的運演算法則:
1、在邏輯運算中,認定非零元素為真(1),零元素為假(0)。
2、標量與陣列進行邏輯運算。運算比較在標量與陣列中的每個元素進行比較,運算結果與參與運算的陣列同維。
3、陣列之間進行邏輯運算。運算在兩陣列相同位置上的元素間進行,因此運算結果陣列必定和參與運算的陣列同維。
4、算術運算優先順序最高,邏輯運算優先順序最低。