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]