【问题标题】:Eigen 3.4 .reshaped()特征 3.4 .reshape()
【发布时间】:2019-05-30 01:24:13
【问题描述】:

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

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

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

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

【问题讨论】:

  • Eigen 3.4 尚未发布。请尝试开发分支。
  • 值得注意的是,Eigen 3.4 目前在开发分支中被称为 Eigen 3.3.9。另请参阅这些docs

标签: c++ reshape eigen


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 2019-03-13
    • 2018-01-08
    • 2011-01-10
    • 1970-01-01
    • 2014-05-11
    • 2019-04-16
    • 2021-05-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多