Open michael-p opened 5 years ago
Hi! Thank you for pointing this out. We should rename the current SVD
to ThinSVD
and implement the "fat" one under the SVD
type.
Is someone working on this?
@jannschu maybe the SVD implementation in nalgebra-lapack works for you, at least for now?
I've just ran into this at well. As a non-expert, I spent a while very confused as to why nalgebra's SVD was providing matrices of weird dimensionality, since it doesn't mention "thin" anywhere.
I want the full SVD because I'm trying to compute both the pseudoinverse and null space of a matrix. This is motivated by implementation of the algorithm described in section 3.3 of Optimized Thruster Allocation Utilizing Dual Quaternions for the Asteroid Sample Return Mission (Smith, 2017).
I would also like to have the full SVD as I need it for extracting the basis of the null space. It should be written in the documentation at the bare minimum, it is misleading to label the functionality as SVD when it in fact does not compute the SVD but a matrix subset of it.
For a matrix of shape
R, C
nalgebra's SVD decomposition currently computes the singular vector matricesU
andV_t
with shapesR, M
andM, C
whereM = min(R, C)
. Although this is sufficient for many tasks like solving linear equation systems, in a lot of applications (e.g. in computer vision for homography or fundamental matrix decomposition) it is required to have a full decomposition whereU
andV_t
have shapeR, R
andC, C
. This is also what Eigen, nalgebra-lapack and SciPy compute by default.It would be great if nalgebra provided this as well, at least optionally!