本征 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
元素,这可能会访问无效内存)。
我想将特征向量重塑为矩阵,然后取 .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
元素,这可能会访问无效内存)。