Main Content

colon, :

Crear vectores, subindexar arreglos e iterar bucles for

Sintaxis

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

Descripción

El operador dos puntos es uno de los operadores más útiles de MATLAB®. Puede crear vectores, subindexar arreglos y especificar iteraciones for.

ejemplo

x = j:k crea un vector espaciado por unidades x con elementos [j,j+1,j+2,...,j+m] donde m = fix(k-j). Si j y k son valores enteros, es simplemente [j,j+1,...,k].

ejemplo

x = j:i:k crea un vector espaciado regularmente x utilizando i como el incremento entre elementos. Los elementos del vector son aproximadamente iguales a [j,j+i,j+2*i,...,j+m*i], donde m = fix((k-j)/i). No obstante, si i no es un valor entero, la aritmética de punto flotante ejerce un papel para determinar si colon incluye el punto final k en el vector, ya que puede que k no sea exactamente igual a j+m*i. Si especifica arreglos no escalares, MATLAB interpreta j:i:k como j(1):i(1):k(1).

x = colon(j,k) y x = colon(j,i,k) son formas alternativas de ejecutar los comandos j:k y j:i:k, pero se utilizan con poca frecuencia. Estas sintaxis permiten la sobrecarga de operadores para las clases.

ejemplo

A(:,n), A(m,:), A(:) y A(j:k) son expresiones de indexación comunes para una matriz A que contiene dos puntos. Al utilizar dos puntos como subíndice en una expresión de indexación, como A(:,n), este operador actúa como notación abreviada para incluir todos los subíndices en una dimensión de arreglo concreta. También es habitual crear un vector con dos puntos para indexar, como A(j:k). Algunas expresiones de indexación combinan ambos usos del operador dos puntos, como en A(:,j:k).

Algunas expresiones de indexación que contienen dos puntos son:

  • A(:,n) es la n-ésima columna de la matriz A.

  • A(m,:) es la m-ésima fila de la matriz A.

  • A(:,:,p) es la p-ésima página del arreglo tridimensional A.

  • A(:) remodela todos los elementos de A en un único vector columna. Esto no tiene efecto si A ya es un vector columna.

  • A(:,:) remodela todos los elementos de A en una matriz bidimensional. Esto no tiene efecto si A ya es una matriz o un vector.

  • A(j:k) utiliza el vector j:k para indexar en A y, por lo tanto, equivale al vector [A(j), A(j+1), ..., A(k)].

  • A(:,j:k) incluye todos los subdíndices de la primera dimensión, pero utiliza el vector j:k para indexar en la segunda dimensión. Esto devuelve una matriz con columnas [A(:,j), A(:,j+1), ..., A(:,k)].

Ejemplos

contraer todo

Cree un vector espaciado por unidades de números entre 1 y 10. El operador dos puntos utiliza un incremento predeterminado +1.

x = 1:10
x = 1×10

     1     2     3     4     5     6     7     8     9    10

Cree vectores que aumenten o disminuyan por un valor especificado.

Cree un vector cuyos elementos aumenten en 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

Cree un vector cuyos elementos disminuyan en -2.

y = 10:-2:0
y = 1×6

    10     8     6     4     2     0

Examine distintas formas de indexar una matriz utilizando dos puntos :.

Cree una matriz de 3 por 3. Indexe la primera fila.

A = magic(3)
A = 3×3

     8     1     6
     3     5     7
     4     9     2

A(1,:)
ans = 1×3

     8     1     6

Indexe la segunda y la tercera columna.

A(:,2:3)
ans = 3×2

     1     6
     5     7
     9     2

Remodele la matriz como un vector columna.

A(:)
ans = 9×1

     8
     3
     4
     1
     5
     9
     6
     7
     2

En el contexto de un bucle for, el operador dos puntos especifica las iteraciones de bucle.

Escriba un bucle for que calcule el cuadrado de un número para los valores de n entre 1 y 4.

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

Argumentos de entrada

contraer todo

Valor inicial de vector, especificado como escalar numérico real. Si j < k, de forma que el vector de salida no está vacío, j es el primer elemento del vector.

Ejemplo: x = 0:5

Ejemplo: x = 0:0.5:5

Tipos de datos: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | char | datetime | duration

Valor final de vector, especificado como escalar numérico real. k es el último valor en el vector solo cuando el incremento se alinea para acabar exactamente en k. Por ejemplo, el vector 0:5 incluye 5 como último valor, pero 0:0.3:1 no incluye el valor 1 como último valor, ya que el incremento no se alinea con el punto final.

Ejemplo: x = 0:5

Ejemplo: x = 0:0.5:5

Tipos de datos: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | char | datetime | duration

Incremento entre elementos de vector, especificado como escalar numérico real.

Ejemplo: x = 0:0.5:5

Tipos de datos: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | char | datetime | duration

Argumentos de salida

contraer todo

Vector espaciado regularmente, devuelto como vector fila. Si j > k, x = j:k es una matriz vacía. De forma más general, la sintaxis x = j:i:k devuelve una matriz vacía cuando:

  • i, j o k es una entrada vacía

  • i == 0

  • i > 0 y j > k

  • i < 0 y j < k

Sugerencias

  • La página de referencia de for tiene una descripción sobre cómo utilizar : en el contexto de las instrucciones de bucle.

  • linspace es similar al operador dos puntos, :, pero da un control directo sobre el número de puntos y siempre incluye los puntos finales. La función hermana logspace genera valores espaciados logarítmicamente.

  • Cuando crea un vector para indexar en un arreglo de celdas o en un arreglo de estructuras (como cellName{:} o structName(:).fieldName), MATLAB devuelve múltiples salidas en una lista separada por comas. Para obtener más información, consulte Cómo utilizar las listas separadas por comas.

Capacidades ampliadas

Historial de versiones

Introducido antes de R2006a