SUB2IND Convert Multiple Indexing To Linear Indexing

Section: Elementary Functions


The sub2ind function converts a multi-dimensional indexing expression into a linear (or vector) indexing expression. The syntax for its use is
   y = sub2ind(sizevec,d1,d2,...,dn)

where sizevec is the size of the array being indexed into, and each di is a vector of the same length, containing index values. The basic idea behind sub2ind is that it makes


equivalent to


where the later form is using vector indexing, and the former one is using native, multi-dimensional indexing.


Suppose we have a simple 3 x 4 matrix A containing some random integer elements
--> A = randi(ones(3,4),10*ones(3,4))

A = 
  2  1  4  2 
  8 10  4  7 
 10  7  4 10 

We can extract the elements (1,3),(2,3),(3,4) of A via sub2ind. To calculate which elements of A this corresponds to, we can use sub2ind as

--> n = sub2ind(size(A),1:3,2:4)

n = 
  4  8 12 

--> A(n)

ans = 
  1  4 10