Ranges Next: Previous: Matrices Up: Numeric Data Types



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 80000 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 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.