本征:仅沿一维的动态矩阵:构造失败

Eigen3 : dynamic matrix along one dimension only : failure to contruct

我可以轻松定义固定行数和未定义列数的矩阵类型:

  typedef Matrix<double, 6, Dynamic> dMat6rowsNCols;
  dMat6rowsNCols M1;

但我不知道如何实例化它,这些尝试无法编译:

  M1.Zero(4);
  M1 = dMat6rowsNCols::Zero(4);

我可以问你一些提示吗?

干杯

西尔万

来自DenseBase::Zero(Index)documentation

This is only for vectors (either row-vectors or column-vectors), i.e. matrices which are known at compile-time to have either one row or one column.

你必须使用 DenseBase::Zero(Index, Index):

M1 = dMat6rowsNCols::Zero(6, 4);

如果您使用当前的 Eigen 主干,您可以使用 Eigen::NoChange 实现某些功能,例如

M1.setZero(Eigen::NoChange, 4);

附带说明:调用 M1.Zero 不会调用将所有系数设置为 0 的成员函数,而是一种不太常见的调用静态函数的方法 DenseBase::::Zero. You are probably looking for M1.setZero.