|Re: [eigen] SVD for finding a basis for the nullspace of a wide matrix|
[ Thread Index |
| More lists.tuxfamily.org/eigen Archives
- To: eigen@xxxxxxxxxxxxxxxxxxx
- Subject: Re: [eigen] SVD for finding a basis for the nullspace of a wide matrix
- From: "Gael Guennebaud" <gael.guennebaud@xxxxxxxxx>
- Date: Fri, 14 Nov 2008 11:06:47 +0100
- Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:message-id:date:from:to :subject:in-reply-to:mime-version:content-type :content-transfer-encoding:content-disposition:references; bh=YMKQL5fZQ+D5yK2fnY4RN8Iosr+92TR3quJr+Lc35us=; b=SQ3Zh1WUcSiDWVOwyu9EI1P8gYZkIV5x5pl8ho1QGQ7LP0MwlDsVAzL9DVhTugtJ/h 836m4stKs4uVQbOB5QJ5vN9ymhZnQeomXvLH7A8iMGRrdOfX+DbhiuZmbwfyWcXW7pTe jHsW1lKzbfqVYizEve+LYWQwKrkkNhfEaWMeg=
- Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:to:subject:in-reply-to:mime-version :content-type:content-transfer-encoding:content-disposition :references; b=EQj85g6FVCvFhWVK084WT32njmcWT92jZ0yJ7hjmQBtmFMjc7qxtQ0ew4sYk4OVgKf d9XGjV+EIjJKeLWoiTEulw/Rv+sxFmCWuTFRUJS4USr0jUMEkPRl+vZJz23sLeNzXUmW i4bHBiymbpsoKzqLy9LQjhBzN3+3vvnK7RcuY=
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.