Registered Member
|
I am new to eigen. It appears that it won't currently do a rank-1 cholesky update/downdate. Is that right? Is that feature planned for the future?
|
Registered Member
|
Right, this is currently an internal step not exposed in the API.
It's useful that you mention it so we know that people are potentially interested in having that in the API. Perhaps for 2.1.
Join us on Eigen's IRC channel: #eigen on irc.freenode.net
Have a serious interest in Eigen? Then join the mailing list! |
Registered Member
|
I'm extremely interested. I am using Eigen to do Square-root Unscented Kalman Filtering, and that requires a cholesky downdate. I'd love to see that exposed in 2.1
In the meantime, what is the name of the internal function? I need to get something working soon, and I'd rather hack around a little rather than re-write it myself.
|
Registered Member
|
I only know what's a rank 1 cholesky update, but what's a downdate?
I couldn't say where in the code that is, first because I don't know what a downdate is, second because Gael wrote the code, not me If you're interested at looking at the code it's in Eigen/src/Cholesky/. If what you're looking for isn't in our code, look at the Golub & van loan book here, http://download.tuxfamily.org/eigen/
Join us on Eigen's IRC channel: #eigen on irc.freenode.net
Have a serious interest in Eigen? Then join the mailing list! |
Moderator
|
indeed, there is no such features yet, and I won't have to add it myself. If you want to it then have a look at the LLT class in Eigen/src/Cholesky/LLT.h. I guess you would have to add one function for each case. In case you implement them I'll be pleased to add them upstream.
|
Registered Member
|
Hi, I also would like to implement a Square root Unscented Kalman Filter using Eigen. Have you intgrated the rank one Cholesky update in Eigen yet?
@ pythonian: if you implemented the update, would you mind sharing your code with me? |
Registered Member
|
In the development branch we have rankUpdate() methods in class SelfAdjointView.
Join us on Eigen's IRC channel: #eigen on irc.freenode.net
Have a serious interest in Eigen? Then join the mailing list! |
Moderator
|
hm, here we are talking about rank one *Cholesky* update, i.e., assuming you have a Cholesky factorization LL^T of A (A = LL^T), and you want to directly compute L' such that L'L'^T = A + vv^T where v is a vector.
Do do so we have to add a rankUpdate to the LLT class. AFAIR this is usually implemented using Givens rotation (methods to compute and apply Givens rotations are already in Eigen). Again, contributions are welcome |
Registered Member
|
I ended up writing some cholesky update and downdate code, which I have sent to ggael.
Thanks for a great library! |
Registered Member
|
The interested reader finds additional information about how those cholesky updates (and downdates) work and how they are used in
http://speech.bme.ogi.edu/publications/ps/merwe01a.pdf and more recently in http://www.robots.ox.ac.uk/~gk/publications/holmes_etal_icra2008.pdf |
Registered Member
|
I could also need the cholesky update function in eigen for use in the SR-UKF. Has the function found it's way into the library since april 2010?
|
Registered Member
|
I'm going to add my vote for a cholesky update - The (square-root) Unscented Kalman Filter is flavour of the month in the estimation world, especially when one does not have enough grunt on an embedded platform for a Particle Filter.
As an alternative, cholupdate() is implemented in LINPACK as DCHUD (cholesky update) [1] and dchdd (down-date) [2]. Unfortunately, to my knowledge there is no LAPACK equivalent. Are there LINPACK bindings (I see there are BLAS and LAPACK bindings)? If so, then this might be of use in this instance. [1] http://www.netlib.org/linpack/dchud.f [2] http://www.netlib.org/linpack/dchdd.f |
Moderator
|
Hi,
I've just implemented and committed a cholesky update. It's in the default branch: LLT<MatType,Lower> llt(A); X = llt.solve(B); llt.rankUpdate(v); X = llt.solve(B); ... |
Registered Member
|
I've also noticed that Lapack dropped the Cholesky update/downdate as well as the pivoted Cholesky from Linpack. Were there numerical reasons for these omissions? |
Registered users: Bing [Bot], Google [Bot], q.ignora, watchstar