# Indexing

Indexing is used to retrieve one or more specific values out of a collection.

The () characters are used to indicate indexing of a variable. The value(s) between the ()’s are the indices.
a=[1,2,3;4,5,6]
b=a(1,2)
This retrieves the value from the first row, second column of the matrix referred to by variable a and assigns it to variable b.

Indices must be positive integers. The first element is always 1.

Indexing can also be used to assign values to a specific location in a collection:
a(2,3)=-3
For vectors, only a single index needs to be specified.
x=[1,2,3]
x(2)
A single index may also be used when indexing into a matrix. This is interpreted as the nth element, starting at the 1,1 position and counting down columns first, and then across rows.
a=[1,2,3;4,5,6]
a(2)
a(5)
In the above example a(2) refers to 4 and a(5) refers to 3.
When extracting a value, if an index exceeds the size of a collection, an error occurs.
A=[1,2,3]
A(4) – causes an error
However, if an index exceeds the size of a collection during an assignment, the collection is automatically resized to accommodate the new element. Any intermediate elements are initialized to 0.
A=[1,2,3]
A(5)=9
Matrix A now has 5 elements – [1,2,3,0,9].
The : can be used to request an entire row or column when indexing.
A=[1,2,3;4,5,6]
A(1,:)=> [1,2,3] (returns the first row)
A(:,1)=> [1;4] (returns the first column)
A vector or matrix can also be indexed by range.
A = [1 8 3 2 0 4]
A(2:5) => [8 3 2 0]
When indexing a collection, the end function can be used to return the index of the last element of the collection.
A(2:end) => [8 3 2 0 4]
Rows and columns of a matrix can be removed by assigning them to an empty matrix.
A=[1,2,3;4,5,6]
A(1,:) = []
A => [4,5,6]
The same applies to assigning a subsection of a matrix to a new value:
A=[1,2,3;4,5,6]
A(1,:) = 0
A => [0,0,0;4,5,6]
Indices must normally be positive integers. However, when using a special type of variable known as a logical variable, they can be 0 or 1. When a logical index is 0, the corresponding element is not included in the result. When a logical index is 1, it is included.
A=[1,2,3,4]
A(logical([0,1,1,0])) => [2,3] 
The size of the logical matrix must match the size of the matrix being indexed.