0
我對Eigen庫有一些問題。雖然我打電話的調整大小功能,當我嘗試牛逼訪問矩陣中的第二個for循環,我得到的Eigen MatrixX聲明失敗,雖然調用了調整大小
徵斷言指數= 0 & &指數大小()失敗
錯誤矩陣。
Eigen::Matrix<float, 1, 2> linearRegression(Eigen::Vector2f *p, int pointCount)
{
Eigen::MatrixXf M;
Eigen::Matrix<float, 1, 2> A;
Eigen::MatrixXf Y;
M.resize(pointCount, 2);
Y.resize(pointCount, 1);
for (int i = 0; i < pointCount; i++)
{
M(i, 0) = p[i].x();
M(i, 1) = 1;
Y(i, 0) = p[i].y();
}
A = (M.transpose() * M).inverse() * M.transpose() * Y;
return A;
}
我可以看到成員m_rows
和Visual Studio調試器矩陣M的m_cols
和i
不超過他們。該錯誤直接發生在i = 0
。
MatrixXf
應該與Matrix<float, Dynamic, Dynamic>
相同。
當我聲明一個常數pointCount並使用固定大小的矩陣時,一切正常。
Eigen::Matrix<float, 1, 2> linearRegression(Eigen::Vector2f *p, int pointCount)
{
const int pointCount = 30;
...
Eigen::Matrix<float, pointCount, 2> M;
Eigen::Matrix<float, 1, 2> A;
Eigen::Matrix<float, pointCount, 1> Y;
...
}
我在做什麼錯?
可能你的矩陣A是原因?你打印出行()和列()訪問?嘗試使用正確的維度初始化矩陣,而不是在構建後調整大小。 –
使用std :: vector作爲你的函數的參數,或者gsl :: span,與eigen強項無關:) –