2017-06-18 3 views
0

を分解し、MATLABが機能を持っていますは、QRに大きな行列を適用し、私は固有のライブラリでC++にMATLABコードを変換する必要がありますが、私はQRでいくつかの問題が分解してい

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

それは経済規模を生産m>nの場合は、の最初のnカラムと、Rの最初のnローだけが計算されます。 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); 
関連する問題