本征:仅沿一维的动态矩阵:构造失败
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
.
我可以轻松定义固定行数和未定义列数的矩阵类型:
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
.