This page was created by the IDL library routine
mk_html_help. For more information on
this routine, refer to the IDL Online Help Navigator
or type:
? mk_html_help
at the IDL command line prompt.
Last modified: Tue Dec 20 11:48:25 2005.
NAME:
INDX2DIM
PURPOSE:
Converts one-dimensional indices into multidimensional indices.
CALLING SEQUENCE:
Result = INDX2DIM(Array, Index_Array, [,
N_DIMENSIONS=variable][, DIMENSIONS=variable] )
INPUTS:
ARRAY: a multidimensional array
INDEX_ARRAY: array of one-dimensional indices in ARRAY
OUTPUTS:
Returns an N_DIMENSIONS by N_elements(index_array) array with
the multidimensional array indices corresponding to each
one-dimensional array index stored in index_array. If any of
the input one-dimensional indices are greater than the number
of total elements in the input array (or less than zero) then
the multidimensional index returned for each such out-of-range
index will be a row of -1L.
OPTIONAL OUTPUTS:
N_DIMENSIONS = the number of dimensions of ARRAY
DIMENSIONS = the dimensions of ARRAY; a vector of length N_DIMENSIONS
COMMON BLOCKS:
None.
SIDE EFFECTS:
None.
EXAMPLE:
Make a 4-D array...
IDL> x = indgen(2,3,4,5)
Use WHERE to get the 1-D indices for where array is multiple
of 25...
IDL> indx = where(x mod 25 eq 0, nindx)
Return the multidimensional array indices
IDL> dim = indx2dim(x,indx,N_DIMENSIONS=ndim,DIMENSIONS=dims)
Check the dimensions of the array x...
IDL> print, dims
2 3 4 5
Check the size of the returned multidimensional array; it should
be N_DIMENSIONS by N_elements(indx)...
IDL> help, ndim, nindx, dim
NDIM LONG = 4
NINDX LONG = 5
DIM LONG = Array[4, 5]
Finally, what are the multidimensional indices...
IDL> print, dim
0 0 0 0
1 0 0 1
0 1 0 2
1 1 0 3
0 2 0 4
NOTES:
This routine now exists in IDL 6.0 and is named
ARRAY_INDICES(). However, if you pass in an index that is out
of bounds, ARRAY_INDICES() crashes and gives a warning.
The returned array has size N_DIMENSIONS by N_elements(index_array).
This is because the user will most likely be using a loop to access
each of the returned multidimensional indices: it is faster to loop
over the second dimension of the returned 2-D array. E.g., in the
above example, you would access each of the multidimensional
indices like this...
IDL> for i = 0, nindx-1 do print, dim[*,i]
We are accessing each row, which is faster than accessing each
column, hence my choice for the orientation of the returned array.
MODIFICATION HISTORY:
15 Feb 2004 Written by Tim Robishaw, Berkeley
(See /dzd2/heiles/idl/gen/array/indx2dim.pro)