Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

colon, :

Creación de vectores, subíndices de arrays e iteración de for-loop

Sintaxis

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

Descripción

El signo de dos puntos es uno de los operadores más útiles de MATLAB®. Permite crear vectores, generar subíndices de arrays y especificar iteraciones de for.

ejemplo

x = j:k crea un vector x de espaciado unitario con elementos [j,j+1,j+2,...,j+m] donde m = fix(k-j). Si j y k son números enteros, entonces esto es simplemente [j,j+1,...,k].

ejemplo

x = j:i:k crea un vector x con espaciado regular mediante i como incremento entre elementos. Los elementos vectoriales son aproximadamente iguales a [j,j+i,j+2*i,...,j+m*i], donde m = fix((k-j)/i). Sin embargo, si i no es un entero, entonces la aritmética en punto flotante desempeña un papel a la hora de determinar si colon incluye el extremo k en el vector, ya que k puede no ser exactamente igual a j+m*i. Si especifica arrays 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 raramente se utilizan. 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 el operador de dos puntos. Cuando se utilizan los dos puntos como subíndice en una expresión de indexación, como A(:,n), actúa como clave para incluir todos los subíndices de una dimensión de array determinada. También es común crear un vector con dos puntos para fines de indexación, como A(j:k). Algunas expresiones de indexación combinan ambos usos de los dos puntos, como en A(:,j:k).

Las expresiones de indexación comunes que contienen dos puntos son:

  • A(:,n) es la n.ª columna de la matriz A.

  • A(m,:) es la m.ª fila de la matriz A.

  • A(:,:,p) es la p.ª página del array tridimensional A.

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

  • A(:,:) reformula todos los elementos de A en una matriz bidimensional. Esto no tiene ningún 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, es equivalente al vector [A(j), A(j+1), ..., A(k)].

  • A(:,j:k) incluye todos los subí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 de espaciado unitario de números entre 1 y 10. El operador de los dos puntos utiliza un incremento predeterminado de +1.

x = 1:10
x = 1×10

     1     2     3     4     5     6     7     8     9    10

Cree vectores que incrementen o disminuyan según un valor especificado.

Cree un vector cuyos elementos se incrementen a intervalos de 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 a intervalos de -2.

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

    10     8     6     4     2     0

Examine varias formas de indexar una matriz mediante el operador de 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 tercera columnas.

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

     1     6
     5     7
     9     2

Reformule la matriz como un vector de columna.

A(:)
ans = 9×1

     8
     3
     4
     1
     5
     9
     6
     7
     2

En un contexto de for-loop, los dos puntos especifican las iteraciones del bucle.

Escriba un for-loop que eleve al cuadrado un número para 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 de vector inicial, especificado como escalar numérico real. Si j < k para 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 de vector final, especificado como escalar numérico real. k es el último valor del 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 extremo.

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 vectoriales, 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 de espaciado regular, devuelto como vector de 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 incluye una descripción sobre cómo utilizar : en el contexto de las instrucciones de bucle.

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

  • Cuando se crea un vector para indexar en un array de celdas o 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

Introducido antes de R2006a