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.

Remodelar y reorganizar matrices

Muchas funciones de MATLAB® pueden tomar los elementos de una matriz existente y ponerlos en una forma o secuencia diferente. Esto puede ser útil para el preprocesamiento de los datos para los cálculos posteriores o el análisis de los datos.

Remodelación

La función cambia el tamaño y la forma de una matriz.reshape Por ejemplo, remodele una matriz de 3 por 4 a 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 que el número de elementos de cada forma sea el mismo, puede remodelarlos en una matriz con cualquier número de dimensiones. Utilizando los elementos de, cree una matriz multidimensional de 2 por 2 por 3.A

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  

Transponer y voltear

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

Cree una matriz de 3 por 3 y calcule su transposición.

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 computa la transposición conjugada para matrices complejas.' Esta operación calcula el conjugada compleja de cada elemento y lo transpone. Cree una matriz compleja de 2 por 2 y calcule su transposición 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

invierte las filas de una matriz en una dirección hacia abajo y voltea las columnas en una dirección de izquierda a derecha.flipudfliplr

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

Cambio y rotación

Puede desplazar elementos de una matriz por un determinado número de posiciones utilizando la función.circshift Por ejemplo, cree una matriz de 3 por 4 y cambie sus columnas a la derecha por 2. El segundo argumento indica cambiar las filas 0 lugares y desplazar las columnas 2 lugares a la derecha.[0 2]circshift

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 arriba por 1 y mantener las columnas en su lugar, especifique el segundo argumento como.A[-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 puede rotar una matriz en sentido antihorario por 90 grados.rot90

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

     1     2
     3     4

B = rot90(A)
B = 2×2

     2     4
     1     3

Si rota 3 veces más utilizando el segundo argumento para especificar el número de rotaciones, terminará con la matriz original.A

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

     1     2
     3     4

Clasificación

Ordenar los datos en una matriz también es una herramienta valiosa, y MATLAB ofrece una serie de enfoques. Por ejemplo, la función ordena los elementos de cada fila o columna de una matriz por separado en orden ascendente o descendente.sort Cree una matriz y ordene cada columna en orden ascendente.AA

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 segundo valor del argumento especifica que desea ordenar las filas.2

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 enteras en relación entre sí, utilice la función.sortrows Por ejemplo, ordene las filas en orden ascendente según los elementos de la primera columna.A Las posiciones de las filas cambian, pero el orden de los elementos en cada fila se conservan.

D = sortrows(A) 
D = 4×4

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

Temas relacionados