本征模板函数和维度
Eigen Templated Function and Dimensions
我有一个表单函数
template <typename derived>
void foo(Eigen::DenseBase<Derived>& z){
nc = z.cols();
nr = z.rows();
Eigen::DenseBase<Derived> x(nr-1, nc);
}
我想要一个有点像上面的伪代码的函数。本质上,我想传递一个对象 z,它可以是 VectorXd 或 MatrixXd 对象,如果它是 MatrixXd 对象,那么我想将 x 定义为维度 (nr-1) x nc 的 MatrixXd。但是,如果 z 是 VectorXd 对象,我想将 x 定义为长度为 (nr-1) 的 VectorXd 对象。
我该怎么做?
Eigen::DenseBase<>
是一个抽象基础 class,您不能创建任何此类类型的对象。您正在寻找的是:
typename Derived::PlainObject x(nr-1, nc);
我有一个表单函数
template <typename derived>
void foo(Eigen::DenseBase<Derived>& z){
nc = z.cols();
nr = z.rows();
Eigen::DenseBase<Derived> x(nr-1, nc);
}
我想要一个有点像上面的伪代码的函数。本质上,我想传递一个对象 z,它可以是 VectorXd 或 MatrixXd 对象,如果它是 MatrixXd 对象,那么我想将 x 定义为维度 (nr-1) x nc 的 MatrixXd。但是,如果 z 是 VectorXd 对象,我想将 x 定义为长度为 (nr-1) 的 VectorXd 对象。
我该怎么做?
Eigen::DenseBase<>
是一个抽象基础 class,您不能创建任何此类类型的对象。您正在寻找的是:
typename Derived::PlainObject x(nr-1, nc);