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
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