Matlab build in qr decomposition
2 ビュー (過去 30 日間)
古いコメントを表示
Hi,
I am working on a project which requires qr decomposition of a square matrix (Matlab version 2010B). Matlab has a built-in qr decomposition function which will generate a upper triangular matrix with abs(diag®) decreasing. I am just curious if there is any way to modify it such that abs(diag®) will be increasing instead.
I tried permuting the columns of the matrix in all combination was not able to achieve abs(diag®)increasing. I notice that I can achieve this by modifying Gram-Schmidt algorithm [1]. However, the upper triangular matrix that I get from this algorithm produces a 5X worse performance result compared to the one that is generated from the Matlab built-in function. I understand that QR decomposition is not unique, but I was also puzzling why such a significant performance difference is observed.
Any suggestions is truly appreciated.
Pierce
[1] D. Wubben, et. al, "Efficient algorithm for decoding Layered Space-Timed Codes"
0 件のコメント
回答 (1 件)
Ivan van der Kroon
2011 年 5 月 17 日
It is very hard to make an algorithm more efficient than Matlab-build in codes. But you can use some straigth-forward linear algebra. If you are looking for the decomposition of A, such that A=Q*R you can modify this to A=Q*B*inv(B)*R for any matrix B. The new Q'=Q*B and the new R'=inv(B)*R conserving A=Q'*R' (no transposes or anything, just denoting new matrices).
Now by choosing B accordingly (probably diagonal) you can change the order of diag (R). Watch out that you keep Q' unitary if that is important in your case!
0 件のコメント
参考
カテゴリ
Help Center および File Exchange で Creating and Concatenating Matrices についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!