Documentation

This is machine translation

Translated by Microsoft
Mouseover text to see original. Click the button below to return to the English verison of the page.

Note: This page has been translated by MathWorks. Please click here
To view all translated materals including this page, select Japan from the country navigator on the bottom of this page.

colon, :

Vector creation, array subscripting, and for-loop iteration

The colon is one of the most useful operators in MATLAB®. It can create vectors, subscript arrays, and specify for iterations.

Syntax

x = j:k
x = j:i:k
A(:,n)
A(m,:)
A(:)
A(j:k)

Description

example

x = j:k creates a unit-spaced vector x with elements [j,j+1,j+2,...,j+m] where m = fix(k-j). If j and k are both integers, then this is simply [j,j+1,...,k].

example

x = j:i:k creates a regularly-spaced vector x using i as the increment between elements. The vector elements are roughly equal to [j,j+i,j+2*i,...,j+m*i] where m = fix((k-j)/i). However, if i is not an integer, then floating point arithmetic plays a role in determining whether colon includes the endpoint k in the vector, since k might not be exactly equal to j+m*i. If you specify nonscalar arrays, then MATLAB interprets j:i:k as j(1):i(1):k(1).

x = colon(j,k) and x = colon(j,i,k) are alternate ways to execute the commands j:k and j:i:k, but are rarely used. These syntaxes enable operator overloading for classes.

example

A(:,n), A(m,:), A(:), and A(j:k) are common indexing expressions for a matrix A that contain a colon. When you use a colon as a subscript in an indexing expression, such as A(:,n), it acts as shorthand to include all subscripts in a particular array dimension. It is also common to create a vector with a colon for the purposes of indexing, such as A(j:k). Some indexing expressions combine both uses of the colon, as in A(:,j:k).

Common indexing expressions that contain a colon are:

  • A(:,n) is the nth column of matrix A.

  • A(m,:) is the mth row of matrix A.

  • A(:,:,p) is the pth page of three-dimensional array A.

  • A(:) reshapes all elements of A into a single column vector. This has no effect if A is already a column vector.

  • A(:,:) reshapes all elements of A into a two-dimensional matrix. This has no effect if A is already a matrix or vector.

  • A(j:k) uses the vector j:k to index into A and is therefore equivalent to the vector [A(j), A(j+1), ..., A(k)].

  • A(:,j:k) includes all subscripts in the first dimension but uses the vector j:k to index in the second dimension. This returns a matrix with columns [A(:,j), A(:,j+1), ..., A(:,k)].

Examples

collapse all

Create a unit-spaced vector of numbers between 1 and 10. The colon operator uses a default increment of +1.

x = 1:10
x = 

     1     2     3     4     5     6     7     8     9    10

Create vectors that increment or decrement by a specified value.

Create a vector whose elements increment by 0.1.

x = 0:0.1:1
x = 

         0    0.1000    0.2000    0.3000    0.4000    0.5000    0.6000    0.7000    0.8000    0.9000    1.0000

Create a vector whose elements decrement by -2.

y = 10:-2:0
y = 

    10     8     6     4     2     0

Examine several ways to index a matrix using a colon :.

Create a 3-by-3 matrix. Index the first row.

A = magic(3)
A = 

     8     1     6
     3     5     7
     4     9     2

A(1,:)
ans = 

     8     1     6

Index the second and third column.

A(:,2:3)
ans = 

     1     6
     5     7
     9     2

Reshape the matrix into a column vector.

A(:)
ans = 

     8
     3
     4
     1
     5
     9
     6
     7
     2

In the context of a for-loop, the colon specifies the loop iterations.

Write a for-loop that squares a number for values of n between 1 and 4.

for n = 1:4
    n^2
end
ans = 1
ans = 4
ans = 9
ans = 16

Input Arguments

collapse all

Starting vector value, specified as a real numeric scalar. If j < k so that the output vector is not empty, then j is the first element in the vector.

Example: x = 0:5

Example: x = 0:0.5:5

Data Types: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | char | datetime | duration

Ending vector value, specified as a real numeric scalar. k is the last value in the vector only when the increment lines up to exactly land on k. For example, the vector 0:5 includes 5 as the last value, but 0:0.3:1 does not include the value 1 as the last value since the increment does not line up with the endpoint.

Example: x = 0:5

Example: x = 0:0.5:5

Data Types: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | char | datetime | duration

Increment between vector elements, specified as a real numeric scalar.

Example: x = 0:0.5:5

Data Types: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | char | datetime | duration

Output Arguments

collapse all

Regularly-spaced vector, returned as a row vector. If j > k, then x = j:k is an empty matrix. More generally, the syntax x = j:i:k returns an empty matrix when:

  • i, j, or k is an empty input

  • i == 0

  • i > 0 and j > k

  • i < 0 and j < k

Tips

  • The for reference page has a description of how to use : in the context of loop statements.

  • linspace is similar to the colon operator :, but it gives direct control over the number of points and always includes the endpoints. The sibling function logspace generates logarithmically spaced values.

  • When you create a vector to index into a cell array or structure array (such as cellName{:} or structName(:).fieldName), MATLAB returns multiple outputs in a comma-separated list. For more information, see How to Use the Comma-Separated Lists.

Extended Capabilities

Introduced before R2006a

Was this topic helpful?