Extracción integral de diagonales en matrices con Matlab

En este tutorial abordaremos el método para extraer todas las diagonales de una matriz mediante Matlab.

¿Qué son las diagonales de una matriz? Se refiere a los elementos de una matriz dispuestos en línea diagonal. Tomemos, por ejemplo, la diagonal principal de la siguiente matriz, compuesta por los elementos 1, 5 y 9, resaltados en rojo.$$ M = \begin{pmatrix} \color{red}1 & 2 & 3 \\ 4 & \color{red}5 & 6 \\ 7 & 8 & \color{red}9 \end{pmatrix} $$ Por otro lado, la diagonal secundaria está formada por los elementos 3, 5 y 7, ubicados en la dirección opuesta. $$ M = \begin{pmatrix} 1 & 2 & \color{red}3 \\ 4 & \color{red}5 & 6 \\ \color{red}7 & 8 & 9 \end{pmatrix} $$

Veamos un ejemplo práctico.

Genera una matriz cuadrada de 3x3, con tres filas y tres columnas.

>> M=[1 2 3 ; 4 5 6 ; 7 8 9]
M =
1 2 3
4 5 6
7 8 9

Para extraer todas las diagonales de la matriz, utiliza el comando spdiags().

>> spdiags(M)
ans =
7 4 1 0 0
0 8 5 2 0
0 0 9 6 3

Este comando no solo extrae la diagonal principal, sino también todas las diagonales adicionales, organizándolas en columnas.

Por ejemplo, la columna central de los resultados (destacada en rojo) corresponde a la diagonal principal de la matriz.

las diagonales de la matriz

Las columnas adyacentes a la central representan las diagonales superiores (en verde) e inferiores (en azul) respecto a la diagonal principal.

Extracción de una diagonal específica

Si tu interés se centra en una diagonal en particular, debes especificar un segundo parámetro en la función spdiags().

Por ejemplo, al escribir spdiags(M,0) obtendrás únicamente la diagonal principal de la matriz.

>> spdiags(M,0)
ans =
1
5
9

En los resultados de spdiags(), la diagonal principal se identifica con el índice cero (0). Las diagonales adyacentes tienen índices +1 y -1, respectivamente.

 

los índices de las otras diagonales

Así, al ingresar spdiags(M,1) extraerás la diagonal ubicada justo por encima de la principal.

>> spdiags(M,1)
ans =
0
2
6

De manera similar, para obtener la diagonal inferior a la principal, escribe spdiags(M,-1).

>> spdiags(M,-1)
ans =
4
8
0

Para acceder a otras diagonales, ajusta los índices a -2, +2, etc.

los índices de las otras diagonales

Extracción de diagonales secundarias

Para extraer las diagonales secundarias de la matriz M, que descienden de derecha a izquierda, combina spdiags() con la función fliplr(), que invierte la matriz M de izquierda a derecha.

Así, al teclear spdiags(fliplr(M)) extraerás todas las diagonales secundarias.

>> spdiags(fliplr(M))
ans =
9 6 3 0 0
0 8 5 2 0
0 0 7 4 1

Esta función retorna las diagonales secundarias organizadas en columnas.

Cada columna representa una diagonal de la matriz, de izquierda a derecha.

Las diagonales secundarias de la matriz se muestran en el diagrama.

La columna central (en rojo) corresponde a la diagonal secundaria. Las columnas contiguas (en azul y verde) representan las diagonales situadas por debajo y por encima de la diagonal secundaria, respectivamente.

Nota. Al igual que en la diagonal principal, la central tiene el índice cero (0), y las adyacentes presentan índices de -1 y +1, -2 y +2, etc.
índice de matriz
Por ende, para aislar solo la diagonal secundaria, es necesario escribir spdiags(fliplr(M),0). Para acceder a la diagonal superior a la secundaria, ingresa spdiags(fliplr(M),1), y así sucesivamente.

 
 

Segnalami un errore, un refuso o un suggerimento per migliorare gli appunti

FacebookTwitterLinkedinLinkedin

Matrices en Matlab

Preguntas Frecuentes