Vector creation, array subscripting, and for
-loopiteration
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.
example
x = j:k
createsa unit-spaced vector x
with elements [j,j+1,j+2,...,j+m]
where m= fix(k-j)
. If j
and k
areboth 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
.
x = colon(j,k)
and x = colon(j,i,k)
arealternate ways to execute the commands j:k
and j:i:k
,but are rarely used. These syntaxes enable operator overloading forclasses.
example
A(:,n)
, A(m,:)
, A(:)
,and A(j:k)
are common indexing expressions fora matrix A
that contain a colon. When you use acolon as a subscript in an indexing expression, such as A(:,n)
,it acts as shorthand to include all subscriptsin a particular array dimension. It is also common to create a vectorwith 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
thcolumn of matrixA
.A(m,:)
is them
throw of matrixA
.A(:,:,p)
is thep
thpage of three-dimensional arrayA
.A(:)
reshapes all elements ofA
intoa single column vector. This has no effect ifA
isalready a column vector.A(:,:)
reshapes all elements ofA
intoa two-dimensional matrix. This has no effect ifA
isalready a matrix or vector.A(j:k)
uses the vectorj:k
toindex intoA
and is therefore equivalent to thevector[A(j), A(j+1), ..., A(k)]
.A(:,j:k)
includes all subscriptsin the first dimension but uses the vectorj:k
toindex in the second dimension. This returns a matrix with columns[A(:,j),A(:,j+1), ..., A(:,k)]
.
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
isthe 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
isthe last value in the vector only when the increment lines up to exactlyland on k
. For example, the vector 0:5
includes5 as the last value, but 0:0.3:1
does not includethe value 1 as the last value since the increment does not line upwith 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 numericscalar.
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 anempty matrix when:
i
,j
, ork
isan empty inputi == 0
i > 0
andj > k
i < 0
andj < k
Tips
The for referencepage has a description of how to use
:
in the contextof loop statements.linspace issimilar to the colon operator
:
, but it gives directcontrol over the number of points and always includes the endpoints.The sibling function logspace generateslogarithmically spaced values.When you create a vector to index into a cell arrayor structure array (such as
orcellName
{:}
), MATLAB returnsmultiple 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. Formore 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 logicalvalue.Vector inputs are not supported.
Inputs must be constants.
Uses single-precision arithmetic to produce single-precisionresults.
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™.
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