用c ++特征库求解线性最小二乘方程(动态分配)

时间:2014-05-24 20:29:40

标签: c++ linear-algebra eigen

我正在尝试解决Ax = b类型的简单最小二乘法。 c ++特征库提供了几个相关的功能,我在这里看到了一些解决方案: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基本声明和填写值的简短代码片段会很有帮助。

1 个答案:

答案 0 :(得分:1)

你可以看看这里开始使用Eigen:

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
相关问题