Indexación mediante expresiones lógicas

Es posible utilizar una expresión lógica para indexar filas/columnas. El resultado de dicha operación debe generar un vector lógico (de 0s y 1s) de la misma longitud que la dimensión correspondiente. En ese caso, una fila/columna será seleccionada si el elemento correspondiente del vector lógico es verdad (1). Si el elemento es falso (0) no será seleccionada.

Aunque el resultado de una expresión lógica devuelve un vector de 0s y 1s, no es posible utiliza directamente un vector de 0s y 1s, ya que podría confundirse con una indexación mediante vector de enteros.

Ejemplo

Dada la matriz

Matriz A

definida como

A = [1,2,3; 4,5,6; 7,8,9]

  • A(: , [-1.3,10.5,4.4] > 0.5) representa la 2ª y 3ª columnas ya que la expresión lógica  [-1,10,4]>0 devolverá [0,1,1] ya que el primer elemento del vector no es mayor que 0, mientras que los otros dos si lo son.
  • A(A(:,1)>5 , 3) se selecciona el tercer elemento de las filas para las cuales su primer elemento es mayor que 5. En nuestro caso será el 9, ya que la relación A(:,1)>5 se cumple sólo para el 3er elemento.
  • La expresión A(3,[1:4]>2) derá un error ya que el vector lógico generado par la expresión [1:4]>2 tiene 4 elementos, pero A sólo tiene 3 columnas.
  • La expresión A(3,[0,1,0]) generará un error porque no es posible especificar directamente el vector de 0s y 1s.