2017-06-18 76 views
0

我必须将MATLAB代码转换为C++的本征库,但我有一些问题在QR分解,MATLAB具有的功能:应用上QR大型矩阵分解

[Q,R]=qr(A,0); // A is m-by-n 

它产生的经济规模如果是m>n,则只计算Q的第一行n列和行的R。如果m<=n,这与[Q,R]=qr(A)相同。

我试图在特征库上计算它。但A20000x1000,所以在QR分解时总会有应用程序崩溃。而且我不知道如何在特征或其他方式上产生经济规模分解。

如何将[Q,R]=qr(A,0)转换为C++/Eigen?

+0

你调试它为什么崩溃?你能提供你用来参考的C++代码吗? – Darklighter

+0

因为Q是20000x20000.它太大了,我需要产生经济规模的分解。 – jifeng

+1

http://eigen.tuxfamily.org/bz/show_bug.cgi?id=569(第一个结果为»经济规模分解特征« – Darklighter

回答

0
MatrixXd A(m,n);  
HouseholderQR<MatrixXd> qr; 
qr.compute(A); 
temp= qr.matrixQR().triangularView<Upper>(); 
Q= qr.householderQ() * Eigen::MatrixXd::Identity(m, n); 
R=temp.topRows(n);