问题描述
我可以轻松定义固定行数和未定义列数的矩阵类型:
typedef Matrix<double,6,Dynamic> dMat6rowsNCols;
dMat6rowsNCols M1;
但我不知道如何实例化它,这些尝试无法编译:
M1.Zero(4);
M1 = dMat6rowsNCols::Zero(4);
我可以问你一些提示吗?
干杯
西尔文
解决方法
来自DenseBase::Zero(Index)
的{{3}}:
这仅适用于向量(行向量或列向量),即在编译时已知具有一行或一列的矩阵。
您必须使用 DenseBase::Zero(Index,Index)
:
M1 = dMat6rowsNCols::Zero(6,4);
如果您使用的是当前的 Eigen 主干,您可以使用 Eigen::NoChange
来实现某些功能,例如
M1.setZero(Eigen::NoChange,4);
附带说明:调用 M1.Zero
不会调用将所有系数设置为 0 的成员函数,而是一种不太常见的调用静态函数 documentation 的方法。您可能正在寻找 DenseBase::::Zero
。