arrayindex

Purpose

Converts a scalar vector index to a vector of indices for an N-dimensional array.

Format

i = arrayindex(scalar_idx, orders)
Parameters:
  • scalar_idx (scalar) – index into vector or 1-dimensional array.
  • orders (Nx1 vector) – orders of an N-dimensional array
Returns:

i (Nx1 vector of indices) – index of corresponding element in N-dimensional array.

Examples

// Set the rng seed for repeatable random numbers
rndseed 982348;

orders = { 2, 3, 4, 5 };

/*
** Create 120x1 vector of uniform random numbers
** (2*3*4*5 = 120)
*/
v = rndu(prodc(orders), 1);

/*
** Reshape the 120x1 random vector into a
** 2x3x4x5 dimensional array
*/
a = areshape(v, orders);

vi = 50;
ai = arrayindex(vi, orders);

print "vi = " vi;
print "ai = " ai;
print "v[vi] = " v[vi];
print "getarray(a, ai) = "; getarray(a, ai);

The code above, produces the following output:

vi =   50.000
ai =
   1.000
   3.000
   2.000
   5.000
v[vi] =    0.047
getarray(a, ai) =    0.047

This example allocates a vector of random numbers and creates a 4-dimensional array using the same data. The 50th element of the vector v corresponds to the element of array a that is indexed with ai.

Remarks

This function and its opposite, singleindex(), allow you to easily convert between an N-dimensional index and its corresponding location in a 1-dimensional object of the same size.

See also

Functions singleindex()