Iterative sliding SVD

76 Views Asked by At

I am looking for some (long) time now for an interative SVD algorithm. Goal is to use this for incoming datastream (1 update at time) and perform some sliding signal processing to extract information content by dynamic mode decomposition.

The Idea/Question is:

A is a rectangular matrix m>n build on a measurement stream evolving over time

SVD decomposition of A is known at a given timestamp: [U0,S0,V0]=SVD(A0)

We take the next measurement data to create A1
  - 1 line is removed on the top of A0 
  - 1 new line is added to A0 on the bottom
  - Rank of A0 and A1 are supposed identical
  - Size of A0 and A1 are the same
  - A1 is verry near to A0 
      Singular values are close and change slowly
      Basis operator U0 and V0 are close and changes slowly

Is there a way to verry rapidely calculate SVD(A1) ?
  something like [U1,S1,V1] = SVD(A1,U0,S0,V0);
  a kind of iterative or perturbation method...

Remark: an iterative eigendecomposition could also do the job
  type of: [V1,D1] = eig(A1,V0,D0)
  V,D beeing resp. the EgenVectors and EigenValues
  From this point a raisonable calculation of U,S,V is also possible

Does someone has a good clue how to do this?

Moreover, if some lin algebra specialist could implement this in std tools (blas, mkl, octave, python...) it would be terrific.

Thanks a lot for every info.

0

There are 0 best solutions below