巢狀陣列索引(Indexing Cell Arrays)
在基本巢狀陣列中提到過巢狀陣列的元素可以使用大括號 {} 來存取,但若是使用者需要將巢狀陣列中的元素取出並依然保持巢狀陣列,則可以使用小括號 () 來存取,以下的範例示範大括號與小括號的差異:
c = {"1", "2", "3"; "a", "b", "c"; "4", "5", "6"};
使用大括號取出元素:
c{2, 3}
輸出為
ans = c
使用小括號取出元素:
c(2, 3)
輸出為
ans = { [1,1] = c }
由上面的範例可以看出使用大括號是存取巢狀陣列中的元素,而小括號是存取巢狀陣列中的子巢狀陣列。
巢狀陣列的小括號使用方式與一般多維度的陣列相似,例如將巢狀陣列 c 的第一行與第三行中所有的元素都設為 0
:
c(:, [1, 3]) = {0}
輸出為
c = { [1,1] = 0 [2,1] = 0 [3,1] = 0 [1,2] = 2 [2,2] = b [3,2] = 5 [1,3] = 0 [2,3] = 0 [3,3] = 0 }
有另外一種寫法也可以:
c(:, [1, 3]) = 0;
這裡的 0
會被 Octave 自動替換為 {0}
然後指定給 c
的子巢狀陣列。
另外一個使用小括號的範例:
c = {1, 2, 3; 4, 5, 6}; c([1, 2], :) = c([2, 1], :)
這會將巢狀陣列 c
的第一行與第二行對調,輸出為
c = { [1,1] = 4 [2,1] = 1 [1,2] = 5 [2,2] = 2 [1,3] = 6 [2,3] = 3 }
使用大括號取得巢狀陣列中的元素會傳回逗點分隔序列(請參考逗點分隔序列)。例如使用大括號再將上面的巢狀陣列 c 的第一行與第二行對調回來:
[c{[1, 2], :}] = deal(c{[2, 1], :})
輸出為
c = { [1,1] = 1 [2,1] = 4 [1,2] = 2 [2,2] = 5 [1,3] = 3 [2,3] = 6 }
空矩陣 []
可以用來刪除巢狀陣列中的元素,例如:
x = {"1", "2"; "3", "4"}; x(1, :) = []
輸出為
x = { [1,1] = 3 [1,2] = 4 }
使用大括號將巢狀陣列元素的內容刪除,但保留元素的空間:
x = {"1", "2"; "3", "4"}; x{1, 1} = []; x{1, 2} = []; x
輸出為
x = { [1,1] = [](0x0) [2,1] = 3 [1,2] = [](0x0) [2,2] = 4 }