[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
6.2.3 Indexing Cell Arrays
As shown in see section Basic Usage of Cell Arrays elements can be extracted from cell arrays using the ‘{’ and ‘}’ operators. If you want to extract or access subarrays which are still cell arrays, you need to use the ‘(’ and ‘)’ operators. The following example illustrates the difference:
c = {"1", "2", "3"; "a", "b", "c"; "4", "5", "6"}; c{2,3} ⇒ ans = c c(2,3) ⇒ ans = { [1,1] = c } |
So with ‘{}’ you access elements of a cell array, while with ‘()’ you access a sub array of a cell array.
Using the ‘(’ and ‘)’ operators, indexing works for cell
arrays like for multidimensional arrays. As an example, all the rows
of the first and third column of a cell array can be set to 0
with the following command:
c(:, [1, 3]) = {0} ⇒ = { [1,1] = 0 [2,1] = 0 [3,1] = 0 [1,2] = 2 [2,2] = 10 [3,2] = 20 [1,3] = 0 [2,3] = 0 [3,3] = 0 } |
Note, that the above can also be achieved like this:
c(:, [1, 3]) = 0; |
Here, the scalar ‘0’ is automatically promoted to
cell array ‘{0}’ and then assigned to the subarray of c
.
To give another example for indexing cell arrays with ‘()’, you can exchange the first and the second row of a cell array as in the following command:
c = {1, 2, 3; 4, 5, 6}; c([1, 2], :) = c([2, 1], :) ⇒ = { [1,1] = 4 [2,1] = 1 [1,2] = 5 [2,2] = 2 [1,3] = 6 [2,3] = 3 } |
Accessing multiple elements of a cell array with the ‘{’ and ‘}’ operators will result in a comma-separated list of all the requested elements (see section Comma Separated Lists). Using the ‘{’ and ‘}’ operators the first two rows in the above example can be swapped back like this:
[c{[1,2], :}] = deal(c{[2, 1], :}) ⇒ = { [1,1] = 1 [2,1] = 4 [1,2] = 2 [2,2] = 5 [1,3] = 3 [2,3] = 6 } |
As for struct arrays and numerical arrays, the empty matrix ‘[]’ can be used to delete elements from a cell array:
x = {"1", "2"; "3", "4"}; x(1, :) = [] ⇒ x = { [1,1] = 3 [1,2] = 4 } |
The following example shows how to just remove the contents of cell array elements but not delete the space for them:
x = {"1", "2"; "3", "4"}; x{1, :} = [] ⇒ x = { [1,1] = [](0x0) [2,1] = 3 [1,2] = [](0x0) [2,2] = 4 } |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |