Vector creation, array subscripting, and for
-loop iteration
collapse all in page
Syntax
x = j:kx = j:i:kA(:,n)A(m,:)A(:)A(j:k)
Description
The colon is one of the most useful operators in MATLAB®. It can create vectors, subscript arrays, and specify for
iterations.
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
.
example
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.
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 then
th column of matrixA
.A(m,:)
is them
th row of matrixA
.A(:,:,p)
is thep
th page of three-dimensional arrayA
.A(:)
reshapes all elements ofA
into a single column vector. This has no effect ifA
is already a column vector.A(:,:)
reshapes all elements ofA
into a two-dimensional matrix. This has no effect ifA
is already a matrix or vector.A(j:k)
uses the vectorj:k
to index intoA
. If A is a vector, thenA(j:k)
has the same orientation asA
. IfA
is a matrix, thenA(j:k)
is a row vector.A(:,j:k)
includes all subscripts in the first dimension but uses the vectorj:k
to index in the second dimension. This returns a matrix with columns[A(:,j), A(:,j+1), ..., A(:,k)]
.
example
Examples
collapse all
Create Unit-Spaced Vector
Open Live Script
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×10 1 2 3 4 5 6 7 8 9 10
Create Vector with Specified Increment
Open Live Script
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 = 1×11 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 = 1×6 10 8 6 4 2 0
Index Matrix Rows and Columns
Open Live Script
Examine several ways to index a matrix using a colon :
.
Create a 3-by-3 matrix. Index the first row.
A = magic(3)
A = 3×3 8 1 6 3 5 7 4 9 2
A(1,:)
ans = 1×3 8 1 6
Index the second and third column.
A(:,2:3)
ans = 3×2 1 6 5 7 9 2
Reshape the matrix into a column vector.
A(:)
ans = 9×1 8 3 4 1 5 9 6 7 2
Specify for
-Loop Iterations
Open Live Script
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^2end
ans = 1
ans = 4
ans = 9
ans = 16
Input Arguments
collapse all
j
— Starting vector value
scalar
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
k
— Ending vector value
scalar
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
i
— Increment between vector elements
1
(default) | scalar
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
x
— Regularly-spaced vector
row vector
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
, ork
is an empty inputi == 0
i > 0
andj > k
i < 0
andj < 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
orcellName
{:}
), MATLAB returns multiple outputs in a comma-separated list. For more information, see How to Use Comma-Separated Lists.structName
(:).fieldName
Extended Capabilities
Tall Arrays
Calculate with arrays that have more rows than fit in memory.
This function supports tall arrays with some limitations. For more information, see Index and View Tall Array Elements.
C/C++ Code Generation
Generate C and C++ code using MATLAB® Coder™.
Usage notes and limitations:
Complex inputs are not supported.
The input
i
cannot have a logical value.Vector inputs are not supported.
Inputs must be constants.
Uses single-precision arithmetic to produce single-precision results.
Thread-Based Environment
Run code in the background using MATLAB® backgroundPool
or accelerate code with Parallel Computing Toolbox™ ThreadPool
.
This function fully supports thread-based environments. For more information, see Run MATLAB Functions in Thread-Based Environment.
GPU Arrays
Accelerate code by running on a graphics processing unit (GPU) using Parallel Computing Toolbox™.
The colon
function supports GPU array input with these usage notes and limitations:
To run this function on a GPU and obtain a
gpuArray
output, use any of the following syntaxes:x = gpuArray.colon(j,k)x = gpuArray.colon(j,i,k)
Alternatively, you can also pass
gpuArray
objects directly to the colon operator:x = gpuArray(j):gpuArray(k)x = gpuArray(j):gpuArray(i):gpuArray(k)
64-bit integers are not supported.
For more information, see Run MATLAB Functions on a GPU (Parallel Computing Toolbox).
Distributed Arrays
Partition large arrays across the combined memory of your cluster using Parallel Computing Toolbox™.
This function fully supports distributed arrays. For more information, see Run MATLAB Functions with Distributed Arrays (Parallel Computing Toolbox).
Version History
Introduced before R2006a
expand all
R2024a: Vector creation with nonscalar operands warns
colon now issues a warning when creating vectors if one or more operands are not scalar. For example, expressions like [1 2 3]:2:10
now warn. This warning will become an error in a future release, removing support for nonscalar operands. Previously, colon
used the first element of any nonscalar operands to evaluate the expression.
See Also
for | linspace | logspace | reshape | varargin
Topics
- Generate Sequence of Dates and Time
- MATLAB Operators and Special Characters
- Array Indexing
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- Deutsch
- English
- Français
- United Kingdom (English)
Contact your local office