本征3.4 .reshaped()

时间:2019-05-30 01:24:13

标签: c++ reshape eigen

我想将特征向量重塑为矩阵,然后采用.colwise()。sum()。

Eigen教程中说明的重塑命令未编译(https://eigen.tuxfamily.org/dox-devel/group__TutorialReshape.html

因此,我的问题与Eigen版本编号(是否已发布Eigen 3.4?)和reshape命令本身(我的编译错误为“ Eigen :: VectorXd没有名为'reshaped'的成员”)有关,以及关于高效的替代方案:

VectorXd phi = X * beta; ArrayXd sumPhi = phi.reshaped(4,12).colwise().sum();

1 个答案:

答案 0 :(得分:1)

Eigen 3.4尚未发布(截至2019年5月),我建议尝试开发分支。

由于phi是实际对象(而不是表达式),因此可以使用Map实现相同的目的:

ArrayXd sumPhi = MatrixXd::Map(phi.data(),4,12).colwise().sum();

这应该适用于Eigen的任何版本(至少从3.0开始),但是由于不能确保元素数量实际匹配(如果phi少于4*12个元素而不太安全) ,这可能会访问无效的内存。