12-3 }Cs

在建立某一異質陣列之後,若要取用其中的某個元素進行各種 MATLAB 的運算,也可以使用前述 Content Indexing 的方法,每次只取用一個元素,以下例子先建立一個異質陣列 B,再取用其中第 1 橫列、第 2 直行的元素,以及元素內的構成單位:

Example 1: 12-異質陣列/cellAccess01.mB = {'James Bond', [1 2;3 4;5 6]; pi, magic(5)}; % 先建立一個異質陣列 B F = B{1,2} % 取用異質陣列 B 的第 1 橫列、第 2 直行的元素 G = B{1,2}(3,1) % 若要取用異值陣列的元素的內部構成單位,可以先用 Content Indexing 的方法,再直接加上一般矩陣的索引法 F = 1 2 3 4 5 6 G = 5

若要一次同時取用或刪除多個元素,則必需使用 Cell Indexing 的方法,例如:

Example 2: 12-異質陣列/cellAccess02.mB = {'James Bond', [1 2;3 4;5 6]; pi, magic(5)} % 先建立一個異質陣列 B H = B(2, :) % 將 B 設定成 B 的第二橫列 B(:, 2) = [] % 刪除異質陣列 B 的第二直行所有元素 B = 'James Bond' [3x2 double] [ 3.1416] [5x5 double] H = [3.1416] [5x5 double] B = 'James Bond' [3.1416]

異質陣列可以取代以「逗點分開的變數列」(Comma-Separated Lists),例如:

Example 3: 12-異質陣列/cellCslInput01.mF = {[2 3 5], [1 3 4], 'Timmy', 'Annie'}; plot(F{1:2}); % F{1:2} 指向 「[2 3 5], [1 3 4]」,因此 plot(F{1:2}) 就全等於 plot([2 3 5], [1 3 4])。

在上例中,F 是一個維度為 1×4 的異質陣列,F{1:2} 即會指向 「[2 3 5], [1 3 4]」,因此 plot(F{1:2}) 就全等於 plot([2 3 5], [1 3 4])。

同理,我們也可以使用異質陣列來接收「逗點分開的變數列」(通常是函數的多項輸出),範例如下:

Example 4: 12-異質陣列/cellCslOutput01.m[D{1:2}] = max(rand(5)); celldisp(D); D{1} = 0.7317 0.7447 0.9294 0.5085 0.8176 D{2} = 1 1 4 5 2

在上例中,我們可以將 D{1:2} 看成是由逗點分開的變數列,因此 [D{1:2}] 就全等於 [D{1}, D{2}]。有關這方面的說明與應用,可以輸入「help lists」而得到更多資訊。
MATLAB程式設計:入門篇