
Advanced Array Indexing
 A scalar index or the start
and stop of an index range may be nonpositive to reference the
elements near the end of a dimension. Hence, 0 refers to the final element,
1 refers to the next to last element, 2 to the element before that, and
so on. For example,
x(2:1) refers to all but the first
and last elements of the 1D array x. This convention does NOT
work for an index list.
 A range function ifunc may
be followed by a colon and an index range start:stop or start:stop:step
in order to restrict the indices to which the range function applies to
a subset of the entire dimension. Hence, x(min:2:1) returns
the minimum of all the elements of the 1D array x, excluding the
first and last elements.
 An index specified as a scalar,
the start or stop of an index range, or an element of
an index list may exceed the length of the indexed dimension ID,
provided that the entire indexing operation does not overreach the bounds
of the array. Thus, if yis a 5by6 array, then y(22)
refers to the same datum as y(2,5).
 The expression z(..)
 using the rubberindex operator ..  refers to the entire array
z.
This is occasionally useful as the left hand side of an assignment statement
in order to force broadcasting and type conversion of the right hand expression
to the preallocated type and shape z.
 The expression z(*)
 using the rubberindex operator *  collapses a multidimensional
array z into a onedimensional array. Even more useful as z(*,)
to preserve the final index of an array and force a twodimensional result.
