【发布时间】:2022-07-15 02:21:40
【问题描述】:
假设我有原始数据,在编译时我不知道其大小,这就是为什么我需要将其存储在动态大小的矩阵中。我知道我可以初始化一个静态大小的矩阵,如下所示:
std::vector<double> v {1.1, 2.2, 3.3, 4.4}; // \"Raw data\".
Eigen::Matrix<double, 2, 2> m(v.data());
std::cout << m << std::endl;
但是有没有一种类似的初始化方法,或者(甚至更好)设置一个动态的矩阵?类似于以下内容(无法编译)?
std::vector<double> v {1.1, 2.2, 3.3, 4.4}; // \"Raw data\".
Eigen::Matrix<double, Eigen::Dynamic, Eigen::Dynamic> m(v.data(), 2, 2);
std::cout << m << std::endl;
我从this post 的评论中知道我可以使用Eigen::Map,但据我了解,Eigen::Map 不能自己的内存,所以我不能,例如,从函数中返回它。我知道我可以按元素设置矩阵,但这感觉太愚蠢了哈哈。
-
如果在您的情况下仅使用
Eigen::Map不起作用(因为原始内存被破坏或覆盖),您可以将Map复制到Eigen::MatrixXd对象。