qr decomposition run-time performance
조회 수: 11 (최근 30일)
이전 댓글 표시
Hi,
I'm comparing the run-time of the "qr" function:
Option1: R = triu(qr(A))
Option2: [~, R]=qr(A) (or [Q, R]=qr(A)),
Only the "R" output is required.
I've tested them on a large number of possible choices of A, a full (not-sparse) matrix with m >> n.
The result was a significant run-time advantage for triu(qr(A)).
To the best of my knowlegde from Matlab documention, option1 use LAPACK xGEQRF Householder Reflectors, but I couldn't find how option2 was implemented.
Can anyone explain what is (or may be) the cause for such performance difference?
(Using Matlab R2019b)
Thank you in advance!
댓글 수: 0
답변 (2개)
Bruno Luong
2020년 8월 31일
편집: Bruno Luong
2020년 8월 31일
I'm pretty sure both Q-less-qr and qr use the same algorithm.
What you should try is
Option 3
[~, R] = qr(A,0);
that will return (n x n) R matrix without the bottom part padded with 0.
It's about 2 times slower than q-less qr, but it can be simply explained by Q (m x n) that is built and cleared.
If you do the Option2
[~, R] = qr(A);
the invisible cleared Q is (m x m), totally useless orthogonal much bigger matrix that has been built and then cleared.
댓글 수: 4
Christine Tobler
2020년 9월 1일
When a "~" is used for a return value, this is only for code clarity. MATLAB still needs to compute that value, so the second case is computing the Q, even though you don't intend to use it.
댓글 수: 0
참고 항목
카테고리
Help Center 및 File Exchange에서 Function Creation에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!