这是一个相当简单的任务,但我找不到它的答案:
使用Eigen库,假设我有Matrix2Xd mat和Vector2d vec,其中:
现在我需要类似于
这要怎么做才是最好(最简单)的方法?
请注意,这不是如何在Eigen中从向量创建矩阵的重复。我不想初始化构建矩阵,而是想添加到现有的矩阵中。或者也许有什么诀窍可以在这种情况下使用逗号初始化吗?以下代码将失败:
使用Eigen库,假设我有Matrix2Xd mat和Vector2d vec,其中:
mat = 1 1 1
1 1 1
vec = 2 2
现在我需要类似于
mat.addCol(vec)
这样的东西,以便之后使用。mat = 1 1 1 2
1 1 1 2
这要怎么做才是最好(最简单)的方法?
请注意,这不是如何在Eigen中从向量创建矩阵的重复。我不想初始化构建矩阵,而是想添加到现有的矩阵中。或者也许有什么诀窍可以在这种情况下使用逗号初始化吗?以下代码将失败:
Matrix2Xd mat(2,3);
Vector2d vec;
mat << 1, 1, 1, 1, 1, 1;
vec << 2, 2;
cout << mat << endl;
mat << vec; // <-- crashes here
cout << mat << endl;
编辑:下面的代码可以实现,但我不喜欢在这么基本的任务中需要一个临时变量。有更好的方法吗?
Matrix2Xd tmp(2, mat.cols()+1);
tmp << mat, vec;
mat = tmp;
resize
成员函数...文档可以通过谷歌搜索或者至少阅读一下。 - rubenvb