svdappend

Atualiza uma SVD existente depois que colunas ou linhas são acrescentadas à matriz.

Categoria: Mathematics > Linear Algebra

Sintaxe

S1 = svdappend(U, S, V, D)

Retorna os valores singulares de [U*S*V' D].

[U1, S1, V1] = svdappend(U, S, V, D)

Retorna os fatores de tamanho econômico da matriz ampliada.

___ = svdappend(U, S, V, D, 'Shape', 'rows')

Acrescenta as linhas de D abaixo da matriz em vez de colunas ao lado.

Descrição

Quando os dados chegam em lotes, é desperdício decompor a matriz inteira de novo a cada vez. svdappend parte dos fatores que você já tem e devolve a SVD econômica da matriz com os novos dados anexados, um atalho prático para o padrão usual de atualização.

O resultado é o mesmo, a menos de sinais, que chamar svd diretamente em [U*S*V' D].

Argumentos de entrada

U, S, V
Fatores de uma SVD existente; S pode ser uma matriz ou um vetor de valores singulares.
D
Novas colunas (ou linhas) a acrescentar. Precisa ter tantas linhas quanto U (ou tantas colunas quanto V tem linhas, com a opção de linhas).
'Shape'
'columns' (padrão) ou 'rows'.

Argumentos de saída

S1
Com uma saída, o vetor de valores singulares da matriz ampliada.
U1, V1
Vetores singulares da matriz ampliada.

Exemplo

Acrescentar uma coluna

A = magic(3);
[U, S, V] = svd(A, 'econ');
d = [1; 2; 3];
s1 = svdappend(U, S, V, d)'
s2 = svd([A d])'
Saída
s1 = 1×3

   15.3990    7.0620    3.4641
s2 = 1×3

   15.3990    7.0620    3.4641

Observações

No MatLivre, com várias saídas S1 volta como vetor coluna de valores singulares, não como matriz diagonal.

Veja também

svd svds svdsketch qrupdate