本征 3.4 .reshaped()

Eigen 3.4 .reshaped()

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

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

因此,我的问题与 Eigen 版本编号(Eigen 3.4 是否已发布?)以及 reshape 命令本身(我的编译错误显示 "Eigen::VectorXd has no member named 'reshaped'")以及关于以下内容的有效替代方案的建议一样多:

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

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

由于 phi 是一个实际对象(而不是表达式),您可以使用 Map:

实现相同的目的
ArrayXd sumPhi = MatrixXd::Map(phi.data(),4,12).colwise().sum();

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