GNU Octave Manual Version 3by John W. Eaton, David Bateman, Søren Hauberg Paperback (6"x9"), 568 pages ISBN 095461206X RRP £24.95 ($39.95) |

## 4.2 Ranges

A *range* is a convenient way to write a row vector with evenly
spaced elements. A range expression is defined by the value of the first
element in the range, an optional value for the increment between
elements, and a maximum value which the elements of the range will not
exceed. The base, increment, and limit are separated by colons (the
`‘:’` character) and may contain any arithmetic expressions and
function calls. If the increment is omitted, it is assumed to be 1.
For example, the range

1 : 5

defines the set of values `‘[ 1, 2, 3, 4, 5 ]’`, and the range

1 : 3 : 5

defines the set of values `‘[ 1, 4 ]’`.

Although a range constant specifies a row vector, Octave does *not*
convert range constants to vectors unless it is necessary to do so.
This allows you to write a constant like `‘1 : 10000’` without using
80,000 bytes of storage on a typical 32-bit workstation.

Note that the upper (or lower, if the increment is negative) bound on
the range is not always included in the set of values, and that ranges
defined by floating point values can produce surprising results because
Octave uses floating point arithmetic to compute the values in the
range. If it is important to include the endpoints of a range and the
number of elements is known, you should use the `linspace`

function
instead (see section 16.4 Special Utility Matrices).

When Octave parses a range expression, it examines the elements of the expression to determine whether they are all constants. If they are, it replaces the range expression with a single range constant.

ISBN 095461206X | GNU Octave Manual Version 3 | See the print edition |