On 20-Nov-2012 00:30, Charles R Harris wrote:
On Mon, Nov 19, 2012 at 4:17 PM, Virgil Stokes <[email protected]
<mailto:[email protected]>> wrote:
I am using the latest versions of numpy (from
numpy-1.7.0b2-win32-superpack-python2.7.exe) and scipy (from
scipy-0.11.0-win32-superpack-python2.7.exe ) on a windows 7 (32-bit)
platform.
I have used
import numpy as np
q,r = np.linalg.qr(A)
and compared the results obtained from MATLAB (R2010B)
[q,r] = qr(A)
The q,r returned from numpy are both the negative of theq,r returned
from MATLAB for the same matrix A. I believe that the q,r returned from
MATLAB are correct. Why am I getting their negative from numpy?
Note, I have tried this on several different matrices --- numpy always
gives the negative of MATLAB's q,r values.
[I mistakenly have already sent a similar email to the scipy list ---
please excuse this mistake.]
They are both correct, the decomposition isn't unique. In particular, if both
algorithms use Housholder reflections there are two possible reflection planes
at each step, one of which is more numerically stable than the other, and the
two choices lead to different signs at each step. That said, MATLAB may be
normalizing the result in some way or using some other algorithm.
Chuck
_______________________________________________
NumPy-Discussion mailing list
[email protected]
http://mail.scipy.org/mailman/listinfo/numpy-discussion
I am aware that they are both correct; but, if you are doing covariance QR
decomposition then you almost surely are interested in the positive results
(which is the default for MATLAB and most papers/books on this subject).
This problem came up recently when converting MATLAB code to python/numpy, with
some Kalman Filter/Smooth code. It took some time to isolate the problem. It
would useful if the documentation (numpy) stated explicitly what the default
"signs" are for q,r.
Thanks for your interest in the problem, Chuck.
_______________________________________________
NumPy-Discussion mailing list
[email protected]
http://mail.scipy.org/mailman/listinfo/numpy-discussion