Indexes allows you to access an elements from a matrix or vector (think about accessing data in a multidimensional Array)

The indexing operator is (), so to access data in Row 2; Column 3 you would do

A(2,3)

You are also able to assing a new value to that index

A(2,3)=4

Supplying just one index returns a scalar result.

A(1:2) # Vector result A([1:2]) # Column Vector result

You can also use the colon for a column vector output containing all the elements

a(:) a(:)'

Given the follow

a = [1, 2; 3, 4]

all of the following expression 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

When you have large data sets and you need to select, say, the first 1000 elements in column 1 you would do

A(1:1000, 1)

You could also do the following, so that the range can be interpreted as a row vector

A([1:1000],1)

If you wanted to select every other row, you would do

A([1:2:1000),1]

And if you wanted to pick out the first 1000 rows and the 1500th row

A([1:1000,1500],:)

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.

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]