Extração de todas as diagonais de uma matriz em Octave
Neste tutorial, apresentarei a metodologia para extrair todas as diagonais de uma matriz utilizando o ambiente de programação Octave. O procedimento será elucidado através de um exemplo prático.
Antes de mais, é importante esclarecer o conceito de diagonais de uma matriz. Basicamente, estamos a referir-nos aos elementos dispostos ao longo das linhas que se iniciam no canto superior direito e terminam no canto inferior esquerdo da matriz, e vice-versa. Considere, por exemplo, a seguinte matriz cuja diagonal principal é composta pelos elementos 1, 5, 9. $$ M = \begin{pmatrix} \color{red}1 & 2 & 3 \\ 4 & \color{red}5 & 6 \\ 7 & 8 & \color{red}9 \end{pmatrix} $$ A sua diagonal secundária, por outro lado, inclui os elementos 3, 5, 7. $$ M = \begin{pmatrix} 1 & 2 & \color{red}3 \\ 4 & \color{red}5 & 6 \\ \color{red}7 & 8 & 9 \end{pmatrix} $$
Passemos agora para a aplicação prática.
Inicialmente, vamos criar uma matriz 3x3
>> M=[1 2 3 ; 4 5 6 ; 7 8 9]
M =
1 2 3
4 5 6
7 8 9
A fim de extrair todas as diagonais, utilizamos o comando spdiags()
>> spdiags(M)
ans =
7 4 1 0 0
0 8 5 2 0
0 0 9 6 3
Note que cada coluna da matriz resultante corresponde a uma diagonal da matriz M.
A coluna central (destacada em vermelho) representa a diagonal principal, composta pelos elementos 1, 5, 9.

Caso se pretenda extrair apenas a diagonal principal, pode-se recorrer ao comando spdiags(M,0)
>> spdiags(M,0)
ans =
1
5
9
Para a extração da diagonal imediatamente acima da diagonal principal, recorre-se ao comando spdiags(M,1)
>> spdiags(M,1)
ans =
0
2
6
Similarmente, para a extração da diagonal imediatamente abaixo da diagonal principal, utilizamos spdiags(M,-1)
>> spdiags(M,-1)
ans =
4
8
0
Caso o interesse recaia sobre a extração de todas as diagonais secundárias da matriz M, utilizam-se em conjunto os comandos spdiags() e fliplr().
A função fliplr permite inverter a matriz M da esquerda para a direita.
Digite spdiags(fliplr(M))
>> spdiags(fliplr(M))
ans =
9 6 3 0 0
0 8 5 2 0
0 0 7 4 1
Cada coluna da matriz resultante representa uma diagonal da matriz M, considerando uma leitura da esquerda para a direita.
A coluna central (destacada em vermelho) constitui a diagonal secundária da matriz, composta pelos elementos 3, 5, 7.

Desta maneira, fica evidente a possibilidade de extração de qualquer diagonal de uma matriz utilizando o ambiente de programação Octave.