如何连接矩阵?

时间:2014-10-11 05:57:25

标签: c++ eigen

我有3个垂直特征矩阵,我想连接它们,就像在matlab C=[B1; B2; B3];中一样。我想连接它们,在这种情况下:C(B1.cols()+B2.cols()+B3.cols(),1)

MatrixXd B1,B2,B3;
C<<B1,B2,B3;

在本征中有什么相同的东西吗?

2 个答案:

答案 0 :(得分:1)

你的问题不是很清楚,但是我已经理解了你需要连接3个大小为(n,1)的垂直矩阵来产生一个大小为的矩阵( m,1),其中 m 是所有 n 的总和。

如果是这样,您可以尝试以下方法:

MatrixXd C(B1.rows() + B2.rows() + B3.rows(), 1);
C << B1, B2, B3;

例如,此代码:

Eigen::MatrixXd B1(3, 1);
B1 << 1, 2, 3;

Eigen::MatrixXd B2(3, 1);
B2 << 42, 43, 44;

Eigen::MatrixXd B3(3, 1);
B3 << -1, -2, -3;

MatrixXd C(B1.rows() + B2.rows() + B3.rows(), 1);
C << B1, B2, B3;
std::cout << "Rows: " << C.rows() << std::endl;
std::cout << "Columns: " << C.cols() << std::endl << std::endl;
std::cout << C << std::endl;

将产生以下输出:

Rows: 9
Columns: 1

 1
 2
 3
42
43
44
-1
-2
-3

答案 1 :(得分:0)

Libigl提供igl::cat功能。也许它会成功。