Main Content

Crear, concatenar y ampliar matrices

La estructura de datos más básica de MATLAB® es la matriz. Una matriz es un arreglo rectangular bidimensional de elementos de datos dispuestos en filas y columnas. Los elementos pueden ser números, valores lógicos (true o false), fechas y horas, cadenas, valores categorical u otro tipo de datos de MATLAB.

Incluso un único número se guarda como una matriz. Por ejemplo, una variable que contenga el valor 100 se guarda como una matriz de 1 por 1 de tipo double.

A = 100;
whos A
  Name      Size            Bytes  Class     Attributes

  A         1x1                 8  double              

Crear una matriz de datos

Si tiene un conjunto específico de datos, puede disponer los elementos en una matriz utilizando corchetes. Una única fila de datos contiene espacios o comas entre los elementos, y un punto y coma separa las filas. Por ejemplo, cree una única fila de cuatro elementos numéricos. El tamaño de la matriz resultante es de 1 por 4, ya que tiene una fila y cuatro columnas. A una matriz con esta forma se le suele llamar vector fila.

A = [12 62 93 -8]
A = 1×4

    12    62    93    -8

sz = size(A)
sz = 1×2

     1     4

Cree ahora una matriz con los mismos números, pero dispóngalos en dos filas. Esta matriz tiene dos filas y dos columnas.

A = [12 62; 93 -8]
A = 2×2

    12    62
    93    -8

sz = size(A)
sz = 1×2

     2     2

Funciones especializadas de las matrices

MATLAB cuenta con muchas funciones que ayudan a crear matrices con determinados valores o con una estructura particular. Por ejemplo, las funciones zeros y ones crean matrices de todo ceros o todo unos. El primer y segundo argumento de estas funciones son el número de filas y el número de columnas de la matriz, respectivamente.

A = zeros(3,2)
A = 3×2

     0     0
     0     0
     0     0

B = ones(2,4)
B = 2×4

     1     1     1     1
     1     1     1     1

La función diag sitúa los elementos de entrada en la diagonal de una matriz. Por ejemplo, cree un vector fila A que contenga cuatro elementos. Después, cree una matriz de 4 por 4 cuyos elementos diagonales sean los elementos de A.

A = [12 62 93 -8];
B = diag(A)
B = 4×4

    12     0     0     0
     0    62     0     0
     0     0    93     0
     0     0     0    -8

Concater matrices

También puede utilizar corchetes para anexar matrices existentes. Esta manera de crear una matriz se denomina concatenación. Por ejemplo, concatene dos vectores fila para crear un vector fila aún más largo.

A = ones(1,4);
B = zeros(1,4);
C = [A B]
C = 1×8

     1     1     1     1     0     0     0     0

Para disponer A y B como dos filas de una matriz, utilice el punto y coma.

D = [A; B]
D = 2×4

     1     1     1     1
     0     0     0     0

Para concatenar varias matrices, deben tener tamaños compatibles. En otras palabras, al concatenar matrices en horizontal, estas deben tener el mismo número de filas. Al concatenarlas en vertical, deben tener el mismo número de columnas.

Por ejemplo, concatene dos matrices con dos filas cada una. Anexe horizontalmente la segunda matriz a la primera usando corchetes.

A = ones(2,3)
A = 2×3

     1     1     1
     1     1     1

B = zeros(2,2)
B = 2×2

     0     0
     0     0

C = [A B]
C = 2×5

     1     1     1     0     0
     1     1     1     0     0

Otra forma de concatenar matrices compatibles es utilizar funciones de concatenación, como horzcat, vertcat y cat. Anexe horizontalmente la segunda matriz a la primera usando horzcat.

D = horzcat(A,B)
D = 2×5

     1     1     1     0     0
     1     1     1     0     0

Generar una secuencia numérica

colon Es una manera útil de crear matrices cuyos elementos sean secuenciales y estén espaciados uniformemente. Por ejemplo, cree un vector fila cuyos elementos sean los números enteros del 1 al 10.

A = 1:10
A = 1×10

     1     2     3     4     5     6     7     8     9    10

Puede utilizar el operador de dos puntos para crear una secuencia de números en cualquier intervalo, con incrementos de uno.

A = -2.5:2.5
A = 1×6

   -2.5000   -1.5000   -0.5000    0.5000    1.5000    2.5000

Para cambiar el valor del incremento de la secuencia, especifique el valor del intermedio entre los valores de inicio y final del intervalo, separado por dos puntos.

A = 0:2:10
A = 1×6

     0     2     4     6     8    10

Para introducir un decremento, utilice un número negativo.

A = 6:-1:0
A = 1×7

     6     5     4     3     2     1     0

También puede introducir un incremento con valores no enteros. Si el valor del incremento no divide en partes iguales el intervalo especificado, MATLAB finaliza automáticamente la secuencia en el último valor que se alcance antes de superar el intervalo.

A = 1:0.2:2.1
A = 1×6

    1.0000    1.2000    1.4000    1.6000    1.8000    2.0000

Ampliar una matriz

Puede añadir uno o varios elementos a una matriz colocándolos fuera de los límites de los índices de fila y columna existentes. MATLAB rellena automáticamente la matriz con ceros para mantener su forma rectangular. Por ejemplo, cree una matriz de 2 por 3 y añádale una fila y una columna adicionales insertando un elemento en la posición (3,4).

A = [10  20  30; 60  70  80]
A = 2×3

    10    20    30
    60    70    80

A(3,4) = 1 
A = 3×4

    10    20    30     0
    60    70    80     0
     0     0     0     1

También puede ampliar el tamaño insertando una nueva matriz fuera de los intervalos de índices existentes.

A(4:5,5:6) = [2 3; 4 5]
A = 5×6

    10    20    30     0     0     0
    60    70    80     0     0     0
     0     0     0     1     0     0
     0     0     0     0     2     3
     0     0     0     0     4     5

Para ampliar el tamaño de una matriz varias veces, como en un bucle for, se recomienda preasignar espacio para la matriz más grande que prevea crear. Sin esta preasignación, MATLAB tiene que asignar memoria cada vez que se aumente el tamaño, lo que ralentiza las operaciones. Por ejemplo, asigne previamente una matriz que contenga un máximo de 10.000 filas y 10.000 columnas inicializando sus elementos a cero.

A = zeros(10000,10000);

Si luego necesita asignar previamente más elementos, puede ampliar la matriz asignando fuera de los intervalos de sus índices o concatenar otra matriz asignada previamente a A.

Arreglos vacíos

Un arreglo vacío en MATLAB es un arreglo con al menos una longitud de dimensión igual a cero. Los arreglos vacíos resultan útiles para representar el concepto de "nada" en términos programáticos. Por ejemplo, suponga que desea buscar todos los elementos de un vector que son inferiores a 0, pero que no hay ninguno. La función find devuelve un vector vacío de índices, lo que indica que no se ha encontrado ningún elemento inferior a 0.

A = [1 2 3 4];
ind = find(A<0)
ind =

  1x0 empty double row vector

Muchos algoritmos contienen llamadas a funciones que pueden devolver arreglos vacíos. A menudo, resulta útil permitir que los arreglos vacíos atraviesen estos algoritmos como argumentos de funciones en lugar de gestionarlos como un caso especial. Si necesita personalizar la gestión de arreglos vacíos, puede comprobarlos con la función .

TF = isempty(ind)
TF = logical
   1

Temas relacionados