C :如何将std ::向量转换为eigen :: matrixxd
C++: how to convert std::vector to Eigen::MatrixXd?
我的 std::vector<double> param
具有(n n * n)长度,我需要将最后一个(n * n)元素移至matrixxd。我这样做了:
MatrixXd cov(n, n);
for(int i = 0 ; i < n ; ++i) {
for(int c = 0 ; c < n ; ++c) {
cov(i, c) = param(n + i * n + c);
}
}
有更好的方法吗?
编辑:更好地表示更快;)
罗杰的答案很好,除了您要使用矢量化,Eigen::Map
不知道它是否对齐,因此没有矢量化。如果需要
Eigen::MatrixXd copiedMatrix = Eigen::Map<Eigen::MatrixXd>(¶m[n], n, n);
如果向量保证矢量连续存储其元素,则最简单,最快的方法是:
std::vector<double> param;
//code//
.
.
.
//code//
double *v = ¶m[n];
Eigen::Map<Eigen::MatrixXd> matrix(v,n + n * n,1);
以这种方式,请重复使用参数的内存。
相关文章:
- 防止主数据类型C++的隐式转换
- 模板参数替换失败,并且未完成隐式转换
- 努力将整数转换为链表。不知道我在这里做错了什么
- HEX值到wchar_t字符(UTF-8)的转换
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 将 Qvector<uint8_t> 转换为 QString
- 如何在cuSparse中使用cusparseXcoo2csr从coo转换为csc
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- 在c++中使用nlohmann从类到json的转换
- 从"int*"强制转换为"unsigned int"会丢失精度错误
- 将Integer转换为4字节的unsined字符矢量(按大端字节顺序)
- 处理小于cpu数据总线的数据类型.(c++转换为机器代码)
- 如何使用OpenCV将RBG图像转换为HSV,并将H、S和V值保存为C++中的3个独立图像
- 将 Eigen::MatrixXd 转换为 arma::mat 并在新对象上制作副本
- 将 Eigen::MatrixXd 矩阵转换为 cgal 容器类型
- 将eigen :: arrayxxd转换为eigen :: matrixxd
- c++ lambda 函数,用于将 Eigen::VectorXd 转换为 Eigen::MatrixXd
- C :如何将std ::向量转换为eigen :: matrixxd
- 从 Eigen::CwiseBinaryOp 转换为 MatrixXd 会导致段错误
- 将 Eigen::matrixXd 转换为 Double