Re: [eigen] SVD for finding a basis for the nullspace of a wide matrix |
[ Thread Index |
Date 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=
Hi,
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
page:
http://eigen.tuxfamily.org/index.php?title=Todo#SVD_module
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.
cheers,
Gael.
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
>
---