MATLAB 程式設計/陣列
陣列是 MATLAB 中最基本的資料型別。在 MATLAB 中,與許多傳統語言一樣,陣列是多個相同型別值的集合。之前介紹的字串和數字資料型別是陣列的特例。
矩陣 是一個具有兩個維度的陣列。大多數陣列具有相同的資料型別;但是,元胞陣列 是一個具有不同資料型別的陣列。如果未為數字指定資料型別,則預設資料型別等同於同一架構上 C 程式語言中的雙精度浮點數。例如,在 x86 和 PowerPC 上,雙精度數具有 64 位。
行陣列使用方括號內的逗號分隔值來建立
>> array = [0, 1, 4, 5]
array =
0 1 4 5
有時對於簡單的行陣列可以省略逗號。不建議省略逗號,因為在更大更復雜的陣列中,空格可能會造成歧義。逗號幾乎總是表示陣列是水平的。
列陣列使用分號來分隔值
>> column = [1; 2; 3]
column =
1
2
3
二維陣列(或矩陣)使用逗號分隔列,分號分隔行來宣告
>> matrix = [1, 2, 3; 4, 5, 6]
matrix =
1 2 3
4 5 6
簡單矩陣操作 是許多線性代數計算的基礎。要使用超過兩個維度的陣列,需要使用索引擴充套件矩陣。
在 MATLAB 中宣告陣列時,所有行和所有列都必須具有相同的大小。如果不符合,則會生成錯誤訊息。
>> matrix = [1, 2, 3; 4, 5] ??? Error using ==> vertcat All rows in the bracketed expression must have the same number of columns.
使用整數對陣列進行索引。要返回簡單陣列中的單個元素,請使用單個整數。
>> array = [0, 1, 4, 5];
>> array(3)
ans =
4
要返回二維陣列中的單個元素,請使用一個數字作為行索引,另一個數字作為列索引。
>> matrix = [1, 2, 3; 4, 5, 6]; >> matrix(2,2) ans = 5
要返回陣列中的多個元素,可以使用陣列作為索引。
>> array = [0, 1, 4, 5];
>> array([1 3])
ans =
0 4
要返回陣列的最後一個元素,請使用 (end)。
>> array = [0, 1, 4, 5];
>> array(end)
ans =
5
可以使用冒號 (:) 返回索引範圍。
>> array = [0, 1, 4, 5];
>> array(2:end)
ans =
1 4 5
與 C 等低階語言不同,MATLAB 中的陣列是一種更高級別的型別:它包含有關其大小、資料型別等各種資訊。
>> array = [0,1,4,5]; >> length(array) ans = 4 >> class(array) ans = double
可以使用內建的 size 函數了解矩陣的行數和列數。遵循標準的數學約定,第一個數字是行數,第二個數字是列數。
>> matrix = [1, 2, 3; 4, 5, 6];
>> size(matrix)
ans =
2 3
MATLAB 陣列的目標是具有類似於數學向量和矩陣的型別。因此,行陣列和列陣列並不等效。一維陣列實際上是多維陣列的特例,size 函式也可以用於它們。
>> size(array)
ans =
1 4
行和列的大小不同,因此它們並不等效。
>> size(column)
ans =
3 1
>> size(row)
ans =
1 3
使用陣列和矩陣的主要優點是,它使您無需使用迴圈即可對陣列的多個元素執行相同的操作。例如,假設您想對陣列 [1,2,3] 的每個元素加 3。如果 MATLAB 不使用陣列,則您必須使用 FOR 迴圈來完成此操作。
>> array = [1,2,3]; >> for ii = 1:3 array(ii) = array(ii) + 3; >> end >> array array = [4,5,6]
在 MATLAB 中,這樣做效率低下,並且會導致程式執行速度非常慢。相反,您可以建立另一個包含 3 的陣列,並將兩個陣列直接相加。MATLAB 會自動將元素分開。
>> array = [1,2,3]; >> arrayofthrees = [3,3,3]; >> array = array + arrayofthrees array = [4,5,6];
如果您只是要新增一個常數,也可以省略 'arrayofthrees' 的宣告,因為 MATLAB 會假設該常數將新增到陣列的所有元素。這非常有用,例如,如果您使用的是大小可變的陣列。
>> array = [1,2,3]; >> array + 3 ans = [4,5,6]
相同的規則適用於標量乘法。
有關 MATLAB 可以對陣列執行的運算的更多資訊,請參閱陣列運算簡介。
陣列是 MATLAB 的一個基本原理,MATLAB 中幾乎所有操作都透過大量使用陣列來完成。要更深入地瞭解陣列及其操作,請參閱陣列和矩陣。