Next: Calling Functions, Up: Expressions [Contents][Index]
An index expression allows you to reference or extract selected elements of a matrix or vector.
Indices may be scalars, vectors, ranges, or the special operator ‘:’, which may be used to select entire rows or columns.
Vectors are indexed using a single index expression. Matrices (2-D) and higher multi-dimensional arrays are indexed using either one index or N indices where N is the dimension of the array. When using a single index expression to index 2-D or higher data the elements of the array are taken in column-first order (like Fortran).
The output from indexing assumes the dimensions of the index expression. For example:
a(2) # result is a scalar a(1:2) # result is a row vector a([1; 2]) # result is a column vector
As a special case, when a colon is used as a single index, the output is a column vector containing all the elements of the vector or matrix. For example:
a(:) # result is a column vector a(:)' # result is a row vector
The above two code idioms are often used in place of reshape
when a simple vector, rather than an arbitrarily sized array, is
needed.
Given the matrix
a = [1, 2; 3, 4]
all of the following expressions are equivalent and select the first row of the matrix.
a(1, [1, 2]) # row 1, columns 1 and 2 a(1, 1:2) # row 1, columns in range 1-2 a(1, :) # row 1, all columns
In index expressions the keyword end
automatically refers to
the last entry for a particular dimension. This magic index can also
be used in ranges and typically eliminates the needs to call
size
or length
to gather array bounds before indexing.
For example:
a = [1, 2, 3, 4]; a(1:end/2) # first half of a => [1, 2] a(end + 1) = 5; # append element a(end) = []; # delete element a(1:2:end) # odd elements of a => [1, 3] a(2:2:end) # even elements of a => [2, 4] a(end:-1:1) # reversal of a => [4, 3, 2 , 1]
• Advanced Indexing: |
Next: Calling Functions, Up: Expressions [Contents][Index]