## Indexing into Matrices and Vectors

In order to extract the (i, j)th entry from a matrix A, use parentheses:

```>> A = [11:16; 21:26; 31:36; 41:46; 51:56] % see colon operator

A =

11    12    13    14    15    16
21    22    23    24    25    26
31    32    33    34    35    36
41    42    43    44    45    46
51    52    53    54    55    56

>> A(2, 5)

ans =

25

```

Given a row vector (a 1xn matrix) or a column vector (an nx1 matrix), you need only give one index:

```>> v = 1:5

v =

1     2     3     4     5

>> v(3)

ans =

3

```

To access a block of elements (extracting submatrices and subvectors), a row vector index can be used in place of a integer index.

```>> A([1 2], 3)             % 3rd element of rows 1 and 2

ans =

13
23

>> A([1 2], [3 4 5])   % submatrix of the 1st and 2nd rows, and 3rd, 4th and 5th columns

ans =

13    14    15
23    24    25

>> v([1 3 4])          % subvector of the 1st, 3rd, and 4th elements

ans =

1     3     4

```

The colon operator can be used as well:

```>> A(1:3, 1:3)             % the upper left 3x3 submatrix

ans =

11    12    13
21    22    23
31    32    33

```

Instead of using numbers, you can use the keyword end to refer to the last element in the row or column:

```>> A(3:end, 4:end)             % the lower right 3x3 submatrix

ans =

34    35    36
44    45    46
54    55    56

>> A(end-2:end, end-2:end);    % another way of doing the same thing
```

As well, you can use the short cut : to represent the entire row or column. That is, you can use : in place of 1:end:

```>> A(3, :)             % extract the 3rd row

ans =

31    32    33    34    35    36

```

The following shows how to extract the submatrix excluding the ith and jth columns:

```>> i = 3; j = 2;
>> A([1:i - 1, i + 1:end], [1:j - 1, j + 1:end])  % remove 3rd row and 2nd column

ans =

11    13    14    15    16
21    23    24    25    26
41    43    44    45    46
51    53    54    55    56

```

Reversing the order of a vector is as easy as:

```>> v(end:-1:1)

ans =

5     4     3     2     1

```

You can, if you want, refer to the same element multiple times, in any order, so the result is not necessarily a submatrix:

```>> A(1, [3,2,1,5,3:end])

ans =

13    12    11    15    13    14    15    16

Logical Matrices as Indices

A logical matrix as an
index returns a column vector which selects all entries in the
matrix corresponding to true in the logical matrix.

>> A = [1 2 3; 4 5 6; 7 8 9]

A =

1     2     3
4     5     6
7     8     9

>> B = logical( [1 0 1; 1 1 0; 0 0 1] )  % must us the logical function

B =

1     0     1
1     1     0
0     0     1

>> A(B)

ans =

1
4
5
3
9

```