Registered Member
|
Hello,
First of all, thank you for the amazing work you've done with eigen. This library is a pleasure to use, with a great API. However, I'm a bit confused by the documentation of HouseHolderQR, and haven't found a solution in this forum. I'm looking to get the Q and R matrix of a QR decomposition of a matrix using HouseHolderQR. The documentation indicates that the method matrixQR() yields "a reference to the matrix where the Householder QR decomposition is stored in a LAPACK-compatible way." What is the easiest way to get Q and R ? Is there a way to get these matrices using eigen, or do I have to look at the way lapack stores this matrix and retrieve it "by hand" ? If this is the case, should this function be added to the existing implementation ? It would prevent errors related to row-wise vs column-wise storage, etc... I do need Q and R because I'm dealing with an algorithm that uses these matrices as a basis for other things, so my goal is not simply to solve a linear system. Thank you for the help, and congratulation for your work ! I'm really looking forward eigen 3.1 with MKL integration. Benoit |
Registered Member
|
I am replying to myself, because the answer might be of some use for other people.
By looking at the implementation of HouseHolderQR, there is a member function householderQ() that does not have any comments even though it is public. I believe this is the reason why it doesn't appear in the documentation http://eigen.tuxfamily.org/dox/classEigen_1_1HouseholderQR.html. So, to get the Q Matrix, one just has to convert m.householderQ() into a MatrixXd for instance, and then the R matrix is the upper triangular matrix of matrixQR(). Should these indications be added to the documentation ? Shouldn't householderQ() be documented ? |
Registered Member
|
Yes, to both question. It seems that the documentation of the HouseHolderQR class can be greatly improved. A patch would be very welcome.
|
Registered Member
|
How to get the permutation matrix? On doing the QR decompostion of matrix X, I can get the Q and R matrix but I require the P matrix also.How to get it?
|
Moderator
|
I guess you are referring to the column-pivoting QR variant available through the ColPivHouseholderQR class: http://eigen.tuxfamily.org/dox/classEig ... derQR.html. As you can see in the doc, there is a colsPermutation() method to get "P".
|
Registered Member
|
I found the solution, so I am reporting (Might help somebody like me ) . qr.compute(A); MatrixXd P = qr.colsPermutation(); |
Registered users: Bing [Bot], Google [Bot], Yahoo [Bot]