Re: [eigen] SVD for finding a basis for the nullspace of a wide matrix

[ Thread Index | Date Index | More Archives ]


the current implementation of the SVD comes from JAMA, and yes, as you
found yourself, the code is pretty opaque. As mentioned on the TODO
we would be very happy is someone could step up to re-implement it in
more generic and more elegant fashion. Unfortunately I don't have any
knowledge on how the SVD decomposition work, but I can help on the
Eigen side of course.


On Fri, Nov 14, 2008 at 10:23 AM, Keir Mierle <mierle@xxxxxxxxx> wrote:
> Right now the SVD, which computes A = USV^T for a mxn matrix A with m >= n,
> produces a square V n x n and rectangular U m x min(n,m). However, for  many
> applications it is necessary to compute the extra columns of U, such that U
> is m x m. For example, in computer vision a (very) common operation is to
> take the SVD of a 3x4 matrix (call it P), row-deficient, in order to find
> the null vector. With a SVD that requires m >= n, this is done by taking the
> SVD of P^T and using U to find the nullvector X such that PX = 0 and ||X|| =
> 1. However, if U is not computed fully, this is not possible. In other
> words, the current Eigen SVD isn't useful for solving underdetermined
> homogeneous linear systems (Ax = 0 with A wide rather than tall).
> I looked into extending the existing SVD code but sadly it's pretty opaque.
> The various papers about implementing the SVD aren't easy either, and I
> don't have a week sink into it. Is anyone working on eigen familiar with the
> SVD algorithms? I may be able to do it in less time with a bit of help.
> Thanks,
> Keir


Mail converted by MHonArc 2.6.19+