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 listas separadas por comas.

Capacidades ampliadas

Historial de versiones

Introducido antes de R2006a