跳轉到內容

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


MATLAB 陣列和矩陣的屬性

[編輯 | 編輯原始碼]

與 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 中幾乎所有操作都透過大量使用陣列來完成。要更深入地瞭解陣列及其操作,請參閱陣列和矩陣。

華夏公益教科書