R与Matlab中复矩阵QR分解的差异
通过下面的矩阵A,我得到了[R]和Matlab之间R的QR分解中的不同矩阵。(当然,Q也是不同的。) 检查R软件的分解,我必须重新排列R矩阵的列,以使用R与Matlab中复矩阵QR分解的差异,r,matlab,matrix,complex-numbers,qr-decomposition,R,Matlab,Matrix,Complex Numbers,Qr Decomposition,通过下面的矩阵A,我得到了[R]和Matlab之间R的QR分解中的不同矩阵。(当然,Q也是不同的。) 检查R软件的分解,我必须重新排列R矩阵的列,以使用Q%*%R[,QR$pivot]重新创建我的原始矩阵A,但这当然破坏了R的上三角性质: zapsmall(Q %*% R[, QR$pivot]) [,1] [,2] [,3] [1,] 1.00+0.00i 0.00+0.00i 1.0+0.0i [2,] -0.75+0.75i 1.00
Q%*%R[,QR$pivot]
重新创建我的原始矩阵A
,但这当然破坏了R的上三角性质:
zapsmall(Q %*% R[, QR$pivot])
[,1] [,2] [,3]
[1,] 1.00+0.00i 0.00+0.00i 1.0+0.0i
[2,] -0.75+0.75i 1.00+0.00i -1.5+1.5i
[3,] 0.00+0.00i -0.75+0.75i 0.0-1.0i
而在Matlab中,直接的Q*R
工作:
Q * R
ans =
1.0000 + 0.0000i 0.0000 + 0.0000i 1.0000 + 0.0000i
-0.7500 + 0.7500i 1.0000 + 0.0000i -1.5000 + 1.5000i
0.0000 + 0.0000i -0.7500 + 0.7500i 0.0000 - 1.0000i
我意识到QR分解不是唯一的,但我需要得到一个上三角R矩阵,就像在Matlab中一样,我可以随后使用它,而无需重新排列它的列,例如Q%*%R=a
关于如何实现这一点,R软件中有什么建议吗
更新:
有人建议问这个问题,但这个答案只适用于实矩阵,而我的问题是复杂的。这回答了你的问题吗?我确实看到了,但我不确定它是否适用于这里,因为lapack选项似乎只适用于实矩阵,而不适用于复杂矩阵?你说得对,我错过了。
zapsmall(Q %*% R[, QR$pivot])
[,1] [,2] [,3]
[1,] 1.00+0.00i 0.00+0.00i 1.0+0.0i
[2,] -0.75+0.75i 1.00+0.00i -1.5+1.5i
[3,] 0.00+0.00i -0.75+0.75i 0.0-1.0i
Q * R
ans =
1.0000 + 0.0000i 0.0000 + 0.0000i 1.0000 + 0.0000i
-0.7500 + 0.7500i 1.0000 + 0.0000i -1.5000 + 1.5000i
0.0000 + 0.0000i -0.7500 + 0.7500i 0.0000 - 1.0000i