- A scalar index or the
`start`and`stop`of an index range may be non-positive 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 1-D 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 1-D 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*y*is a 5-by-6 array, then*y*`(22)`refers to the same datum as*y*`(2,5)`. - The expression
*z*`(..)`- using the rubber-index 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 rubber-index operator`*`- collapses a multidimensional array*z*into a one-dimensional array. Even more useful as*z*`(*,)`to preserve the final index of an array and force a two-dimensional result.

- Language Reference
- Function Reference
- Including Source Files
- Comments
- Issuing Shell Commands
- Matrix Multiplication
- Information About Variables
- Elementary Functions
- Advanced Array Indexing
- Index Range Functions
- Logical Functions
- Interpolation and Lookup Functions
- Sorting
- Transposing
- Manipulating Strings
- Generating Simple Meshes
- Using Pointers
- Instancing Data Structures
- Reshaping Arrays

- I/O Reference