Example computing a SVD?

brien
2010-06-25
2013-04-19
  • brien
    brien
    2010-06-25

    Hi,

    I've been playing around with your library, which seems very useful for large matrices. I have a 100x1000000 matrix of observations (1000000 observation with 100 features each). I would like to compute the SVD of this matrix … do you have an example of using your API?

    So far I have not been able to get the singular values to line up with my usual matrix packages. I have so far allocated a workspace and stepped all 1000000 observations through it.

    Cheers,
    Brien

     
  • Attila Axt
    Attila Axt
    2010-07-27

    Hi Brien! Sorry for my late answer!

    I used it in the following situation: I had an RGB video of size 640x480. Each frame can be represented as an observation of a 921600 (=640x480x3) sized vector. I took 50 frames, and calculated an SVD from it (50x921600). This SVD represents a "background base", calculated from the 0-49 frames. After the 51st frame "steps" in, the SVD represents a "background base", calculated from the 1-50 frames, and so on. So I can have a SVD base which adapts to the frames near to the current frame, without recalculating the whole "batch" SVD for the near frames.

    Here you can see a detailed description of the usage.

    If you want to calculate the SVD of the 100x1000000 matrix once, then this library is not for you :-(.

    If you wanted to use it in the above manner, then the library is not for you :-(, because you have 100 features. So you will have a 100 x m workspace (where m<=100), and for this sizes, the batch SVD calculation is faster than the incremental.

    Maybe I have not understand your problem correctly (my english is poor) , so if you have any questions, please feel free to ask.

    Greetings,
    Attila