我有一个矩阵 M,它有 3 列,但行数(num)未知,这取决于函数的输入。我想在for循环中逐行填充这个矩阵,如下所示:
Matrix<double, Dynamic, 3> M;
for(int iter = 0; iter < num; iter++){
Vector3d x;
x << 1,2,3;
M.row(iter) = x.transpose();}
这不起作用,我做错了什么?我收到的错误消息如下:
Assertion failed: ((i>=0) && ( ((BlockRows==1) && (BlockCols==XprType::ColsAtCompileTime) && i<xpr.rows()) ||((BlockRows==XprType::RowsAtCompileTime) && (BlockCols==1) && i<xpr.cols()))), function Block, file /usr/local/include/eigen3/Eigen/src/Core/Block.h, line 122.
编辑请记住,以下内容根本不会引发错误,因为 M 的行数和列数已定义(4和3):
Matrix<double,4,3> M ;
Vector3d x;
x << 1,2,3;
M.row(0) = x.transpose();