我試圖將一些MATLAB代碼,C++徵:解決A = XB(斷言失敗)
我使用Eigen這是一個夢幻般的庫(嘗試,如果你不知道)
但我想這行轉換:
x = B/A
與
B = rand(7,20);
A = rand(1,20);
代碼在Matlab 工作沒有問題,它返回一個數組(1X7)
隨着艾根(這裏是代碼:
#include <Eigen/Core>
#include <Eigen/Dense>
#include <iostream>
Matrix<double, Dynamic, Dynamic> A(7,20);
Matrix<double, Dynamic, Dynamic> B(1,20);
cout<< A.colPivHouseholderQr().solve(B);
我得到了一個斷言失敗:
rhs.rows ()== dec.rows()
所以看來我只能解決系統的矩陣的相同的行數?
我的數學有點有限,但有沒有辦法解決無論如何?
我也試過這個代碼,而不是:
cout << (A.transpose() * A).ldlt().solve(A.transpose() * B)
和
cout <<A.jacobiSvd(ComputeThinU | ComputeThinV).solve(B)
感謝
傑夫
嗯,在[文件](http://eigen.tuxfamily.org/dox/classEigen_1_1ColPivHouseholderQR .html#afbe1cd1202964011ae7e7411577749a0)說:「b是矩陣的情況尚未實現。」 –
爲了尊重矩陣維數,你不應該假設'Ax = b'!='(7x20)x(1 x 7)=(1 x 20)'。但是(20x7)(7x1)=(20x1)'?除了你的系統是'xA = b',那個工作。 – Vuwox