2014-05-24 76 views
1

我想解決一個類型爲Ax = b的簡單最小二乘法。 C++ eigen庫提供了幾個關於這個的功能,我在這裏看到了一些解決方案:Solving system Ax=b in linear least squares fashion with complex elements and lower-triangular square A matrix和這裏:Least Squares Solution of Linear Algerbraic Equation Ax = By in Eigen C++ 我想要做的是使用矩陣A和B的動態版本。矩陣A的元素在我的情況下是浮點,有3列,但是數據項(即行)的數量是動態的(在一個循環內)。 有一個A,b基本聲明的簡短代碼片段並填寫值是有幫助的。使用C++特徵庫求解線性最小二乘方程式(動態分配)

+1

http://eigen.tuxfamily.org/dox/group__TutorialMatrixClass .html#title2 – Pavel

+2

我找不到問題。 – nwp

回答

1

你可以看看這裏上手徵:

http://getcodefromcoffee.blogspot.it/2015/05/fast-systems-solver-axb-using-c-pcg.html

我已經寫了關於如何解決使用PCG線性系統一個簡單的教程,所以這不是正是你的情況,但源提供的代碼應該可以幫助你進入Eigen的庫(你在問如何聲明矩陣和向量,所以這應該沒問題)。 如果你需要動態矩陣/矢量,只需使用:

MatrixXd m1(5,7); // double 
VectorXd v1(23); // double 

MatrixXf m2(3,5); // floating 
VectorXf v2(12); // floating 

這些變量都將在堆中被保存。

如果您需要方陣或向量與固定大小(但要小心,他們不是動態的!),請使用以下語法:

Matrix3d m3; // double, size 3x3 
Vector3d v3; // double, size 1x3 

Matrix4d m4; // double, size 4x4 
Vector4d v4; // double, size 1x4