在c++中将std::vector转换< double>为特征::ArrayXd?

u7up0aaq  于 2022-12-24  发布在  其他
关注(0)|答案(1)|浏览(188)

在c++中如何将向量转换为特征数组xd?
我发现的唯一方法包括:

Eigen::ArrayXd newEigen = Eigen::ArrayXd::Zero(oldVector.size());

然后循环替换每个元素,有没有更好的方法?
我尝试了一个循环。期望简单的方法来复制数据,如:

Eigen::ArrayXd newEigen(oldVector.data());
w6lpcovy

w6lpcovy1#

虽然这可能是[eigen]标签中最常问的问题,但数量惊人的答案并不是最优的,所以下面是最短、最简洁的版本:

Eigen::ArrayXd newEigen = Eigen::ArrayXd::Map(
      oldVector.data(), static_cast<Eigen::Index>(oldVector.size()));

如果您不想复制数据,Eigen::Map会借用向量中的数据,以便您可以就地访问或更改它。

Eigen::Map<Eigen::ArrayXd> mapped(
      oldVector.data(), static_cast<Eigen::Index>(oldVector.size()));

Eigen::MapEigen::Array的关系就像std::string_viewstd::string的关系,如果这有助于解释的话。

相关问题