Main Content

Remodelar y reorganizar arreglos

Muchas funciones de MATLAB® pueden tomar los elementos de un arreglo existente y cambiarles la forma o cambiar su secuencia. Esto puede resultar útil para el preprocesamiento de los datos de cálculos posteriores o para el análisis de los datos.

Remodelación

La función reshape cambia el tamaño y la forma de un arreglo. Por ejemplo, remodele una matriz de 3 por 4 para convertirla en una matriz de 2 por 6.

A = [1 4 7 10; 2 5 8 11; 3 6 9 12]
A = 3×4

     1     4     7    10
     2     5     8    11
     3     6     9    12

B = reshape(A,2,6)
B = 2×6

     1     3     5     7     9    11
     2     4     6     8    10    12

Siempre y cuando el número de elementos de cada forma sea el mismo, puede remodelarlos en un arreglo con cualquier número de dimensiones. Con los elementos de A, cree un arreglo multidimensional de 2 por 2 por 3.

C = reshape(A,2,2,3)
C = 
C(:,:,1) =

     1     3
     2     4


C(:,:,2) =

     5     7
     6     8


C(:,:,3) =

     9    11
    10    12

Trasposición e inversión

Una tarea habitual del álgebra lineal es trabajar con la traspuesta de una matriz, que convierte las filas en columnas y las columnas en filas. Para ello, utilice la función transpose o el operador .'.

Cree una matriz de 3 por 3 y calcule su traspuesta.

A = magic(3)
A = 3×3

     8     1     6
     3     5     7
     4     9     2

B = A.'
B = 3×3

     8     3     4
     1     5     9
     6     7     2

Un operador similar ' calcula la traspuesta conjugada de matrices complejas. Esta operación calcula el conjugado complejo de cada elemento y lo traspone. Cree una matriz compleja de 2 por 2 y calcule su traspuesta conjugada.

A = [1+i 1-i; -i i]
A = 2×2 complex

   1.0000 + 1.0000i   1.0000 - 1.0000i
   0.0000 - 1.0000i   0.0000 + 1.0000i

B = A'
B = 2×2 complex

   1.0000 - 1.0000i   0.0000 + 1.0000i
   1.0000 + 1.0000i   0.0000 - 1.0000i

flipud invierte las filas de una matriz en dirección descendente y fliplr invierte las columnas de izquierda a derecha.

A = [1 2; 3 4]
A = 2×2

     1     2
     3     4

B = flipud(A)
B = 2×2

     3     4
     1     2

C = fliplr(A)
C = 2×2

     2     1
     4     3

Desplazamiento y giro

Puede desplazar los elementos de un arreglo un número determinado de posiciones mediante la función circshift. Por ejemplo, cree una matriz de 3 por 4 y desplace sus columnas dos posiciones a la derecha. El segundo argumento [0 2] indica a circshift que desplace las filas cero posiciones y las columnas dos posiciones a la derecha.

A = [1 2 3 4; 5 6 7 8; 9 10 11 12]
A = 3×4

     1     2     3     4
     5     6     7     8
     9    10    11    12

B = circshift(A,[0 2])
B = 3×4

     3     4     1     2
     7     8     5     6
    11    12     9    10

Para desplazar las filas de A una posición hacia arriba y mantener las columnas en el mismo lugar, especifique el segundo argumento como [-1 0].

C = circshift(A,[-1 0])
C = 3×4

     5     6     7     8
     9    10    11    12
     1     2     3     4

La función rot90 puede girar una matriz 90 grados en el sentido de las agujas del reloj.

A = [1 2; 3 4]
A = 2×2

     1     2
     3     4

B = rot90(A)
B = 2×2

     2     4
     1     3

Si gira tres veces más utilizando el segundo argumento para especificar el número de giros, volverá a la matriz original A.

C = rot90(B,3)
C = 2×2

     1     2
     3     4

Ordenación

La ordenación de los datos de un arreglo es también una herramienta valiosa y MATLAB ofrece varios enfoques. Por ejemplo, la función sort ordena los elementos de cada fila o columna de una matriz de manera independiente, en orden ascendente o descendente. Cree una matriz A y ordene cada columna de A en orden ascendente.

A = magic(4)
A = 4×4

    16     2     3    13
     5    11    10     8
     9     7     6    12
     4    14    15     1

B = sort(A)
B = 4×4

     4     2     3     1
     5     7     6     8
     9    11    10    12
    16    14    15    13

Ordene cada fila en orden descendente. El valor 2 del segundo argumento especifica que desea ordenar por filas.

C = sort(A,2,'descend')
C = 4×4

    16    13     3     2
    11    10     8     5
    12     9     7     6
    15    14     4     1

Para ordenar filas o columnas completas relacionadas entre sí, utilice la función sortrows. Por ejemplo, ordene las filas de A en orden ascendente según los elementos de la primera columna. Las posiciones de las filas cambian, pero se mantiene el orden de los elementos de cada fila.

D = sortrows(A) 
D = 4×4

     4    14    15     1
     5    11    10     8
     9     7     6    12
    16     2     3    13

Temas relacionados