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