c++ - 如何连接矩阵?

标签 c++ eigen

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

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

Eigen 有什么等价物吗?

最佳答案

你的问题不是很清楚,但我理解你需要连接 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

关于c++ - 如何连接矩阵?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26311631/

相关文章:

c++ - 如何从 Eigen::Matrix 获取内存所有权?

c++ - Codelite 问题——未指定可执行文件,请使用“target exec”

c++ - 在 std vector 中将元素分配给 Eigen::Vector2d 会引发错误

c++ - 为什么这个 XMVector3Transform 调用没有返回正确的结果?

c++ - 在为嵌入类定义方法时,是否有办法避免重复包含的类?

c++ - SSE 性能 Eigen

c++ - Matlab 语法帮助。'*

c++ - Eigen :高效克罗内克积

c++ - 通过指针访问数组

C++ Boost 启动 FFMPEG 不起作用,可通过终端进行工作