c – 使用特征库将列附加到矩阵

前端之家收集整理的这篇文章主要介绍了c – 使用特征库将列附加到矩阵前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
这是一项非常简单的任务,但我无法找到答案:

使用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

实现这一目标的最佳(最简单)方法是什么?

请注意,这不是How do you make a matrix out of vectors in eigen?的重复.我不想初始构造矩阵,而是附加到现有矩阵.或者是否有一个技巧,在这种情况下如何使用逗号初始化?以下代码将失败:

Matrix2Xd mat(2,3);
Vector2d vec;
mat << 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;

解决方法

您可以使用conservativeResize来实现此目的:
mat.conservativeResize(mat.rows(),mat.cols()+1);
mat.col(mat.cols()-1) = vec;

猜你在找的C&C++相关文章