eigen Dense矩阵拼接

  • 矩阵拼接报错:

/usr/include/eigen3/Eigen/src/Core/Block.h:141: Eigen::Block<XprType, BlockRows, BlockCols, InnerPanel>::Block(XprType&, Eigen::Block<XprType, BlockRows, BlockCols, InnerPanel>::Index, Eigen::Block<XprType, BlockRows, BlockCols, InnerPanel>::Index, Eigen::Block<XprType, BlockRows, BlockCols, InnerPanel>::Index, Eigen::Block<XprType, BlockRows, BlockCols, InnerPanel>::Index) [with XprType = Eigen::Matrix<double, -1, -1>; int BlockRows = -1; int BlockCols = -1; bool InnerPanel = false; Eigen::Block<XprType, BlockRows, BlockCols, InnerPanel>::Index = long int]: Assertion a_startRow >= 0 && blockRows >= 0 && a_startRow <= xpr.rows() - blockRows && a_startCol >= 0 && blockCols >= 0 && a_startCol <= xpr.cols() - blockCols' failed.

  • 解决方法
MatrixXd A;
MatrixXd B;
MatrixXd C;
A.resize(3, 3);   //注意矩阵拼接之前必须要确定大小,否则会上述报错
B.resize(3, 9);   //注意矩阵拼接之前必须要确定大小,否则会上述报错
C.resize(9, 3);   //注意矩阵拼接之前必须要确定大小,否则会上述报错
    A << 1, 2, 3,
         4, 5, 6,
         7, 8, 9;
    cout<<"A:"<<A<<endl;
    B << A,A,A; //水平拼接
    cout<<"B:"<<B<<endl;
  //垂直拼接
    C << A,
         A,
         A;
    cout<<"C:"<<C<<endl;
  • 输出结果如下:


    image.png
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容