gpt4 book ai didi

c++ - 从 2d std::vector 初始化 Eigen::MatrixXd

转载 作者:可可西里 更新时间:2023-11-01 17:41:23 26 4
gpt4 key购买 nike

这应该非常简单,但我无法在 Eigen 文档中找到实现它的方法。

假设我有一个 2D vector ,即

std::vector<std::vector<double> > data

假设它充满了10 x 4数据集。

我如何使用这些数据来填写 Eigen::MatrixXd mat .

最明显的方法是像这样使用 for 循环:

#Pseudo code
Eigen::MatrixXd mat(10, 4);
for i : 1 -> 10
mat(i, 0) = data[i][0];
mat(i, 1) = data[i][1];
...
end

但应该有更好的 Eigen 原生方法?

最佳答案

没问题。你不能一次完成整个矩阵,因为 vector<vector>将单行存储在连续的内存中,但连续的行可能不连续。但是您不需要分配一行的所有元素:

std::vector<std::vector<double> > data;
MatrixXd mat(10, 4);
for (int i = 0; i < 10; i++)
mat.row(i) = VectorXd::Map(&data[i][0],data[i].size());

关于c++ - 从 2d std::vector 初始化 Eigen::MatrixXd,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18839240/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com