spdiags

Extrai diagonais de uma matriz, ou monta uma matriz a partir de diagonais.

Categoria: Mathematics > Sparse Matrices

Sintaxe

B = spdiags(A)

Retorna as diagonais não nulas de A como as colunas de B.

[B, d] = spdiags(A)

Também retorna os números das diagonais d.

S = spdiags(B, d, m, n)

Monta uma matriz esparsa m-por-n cujas diagonais d são tiradas das colunas de B.

S = spdiags(B, d, A)

Substitui as diagonais d de A pelas colunas de B.

Descrição

Uma matriz em banda, como o operador de segunda diferença, é escrita de forma compacta listando suas diagonais. Uma coluna de B mais curta que a diagonal é completada: em uma matriz quadrada, uma superdiagonal usa os elementos de B a partir do final, e uma subdiagonal usa-os a partir do início, de modo que os primeiros elementos de uma diagonal superior e os últimos de uma inferior são ignorados.

A extração é o inverso: spdiags(A) descobre quais diagonais não estão vazias e as devolve no mesmo formato, pronto para a forma de construção.

Argumentos de entrada

A
Matriz da qual extrair, ou a modificar.
B
Matriz cujas colunas guardam os valores das diagonais.
d
Vetor de números de diagonais: 0 é a diagonal principal, valores positivos ficam acima, negativos abaixo.
m, n
Tamanho da matriz a criar.

Argumentos de saída

B
Matriz com uma diagonal por coluna, completada com zeros.
S
Matriz esparsa com as diagonais pedidas.

Exemplo

Matriz de segunda diferença

e = ones(4, 1);
A = spdiags([-e 2*e -e], -1:1, 4, 4);
full(A)
[B, d] = spdiags(A);
d
Saída
ans = 4×4

     2    -1     0     0
    -1     2    -1     0
     0    -1     2    -1
     0     0    -1     2
d = 3×1

    -1
     0
     1

Veja também

diag sparse speye full