sparse

Cria uma matriz esparsa, ou converte uma matriz cheia para a forma esparsa.

Categoria: Mathematics > Sparse Matrices

Sintaxe

S = sparse(A)

Converte a matriz cheia A para armazenamento esparso.

S = sparse(m, n)

Cria uma matriz esparsa m-por-n de zeros.

S = sparse(i, j, v)

Cria uma matriz com S(i(k), j(k)) = v(k); posições repetidas são somadas.

S = sparse(i, j, v, m, n)

Igual, com tamanho explícito m-por-n.

S = sparse(i, j, v, m, n, nzmax)

Também reserva espaço para nzmax não nulos.

Descrição

Uma matriz esparsa guarda apenas seus elementos não nulos, o que permite lidar com eficiência com matrizes grandes e quase todas nulas, como malhas de diferenças finitas ou grafos. A exibição lista cada elemento armazenado como (linha,coluna) valor.

A aritmética segue regras simples: esparsa vezes esparsa é esparsa, esparsa mais um escalar não nulo vira cheia, e a maioria das funções elemento a elemento mantém a esparsidade se f(0) = 0. Use full para converter de volta, issparse para testar e find para listar os elementos.

Montar a partir de triplas (i, j, v) é a forma rápida de construir uma matriz. Posições repetidas são somadas, o que é conveniente para montar matrizes de elementos finitos.

Argumentos de entrada

A
Matriz numérica ou lógica.
i, j
Índices de linha e coluna dos elementos, como vetores de inteiros positivos.
v
Valores dos elementos; um escalar é expandido para todas as posições.
m, n
Número de linhas e colunas.

Argumentos de saída

S
Matriz esparsa. Os elementos nulos não aparecem quando ela é exibida.

Exemplo

Triplas, uma soma e uma conversão

S = sparse([1 2 3 3], [1 2 3 3], [4 5 6 1])
full(S)
T = sparse([1 0 2; 0 0 3])
size(sparse(2, 3))
Saída
S = 

   (1,1)        4
   (2,2)        5
   (3,3)        7
ans = 3×3

     4     0     0
     0     5     0
     0     0     7
T = 

   (1,1)        1
   (1,3)        2
   (2,3)        3
ans = 1×2

     2     3

Observações

Valores complexos não são preservados: a parte imaginária é descartada ao montar a matriz esparsa. O MatLivre armazena matrizes esparsas de forma densa, então elas não economizam memória, e tamanhos acima de 200 milhões de elementos são rejeitados. Resultados e exibição coincidem com os do MATLAB em tamanhos comuns.

Veja também

full issparse nnz spalloc speye find