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