将数据从 std::vector 复制到 Eigen's MatrixXd in C++
Copy data from std::vector to Eigen's MatrixXd in C++
eigen是C 中的线性代数库。我在std :: vector(下面的代码中的数据载体)中有数据(双重类型)类型数组。我尝试使用以下代码将其复制在行方面,该代码仍在提供结果列。
Map<MatrixXd, RowMajor> MyMatrix(DataVector.data(), M, N);
我在这里做正确的语法吗?
no。MatrixXd
对象必须定义为行/列专业。请参阅下面的示例。
#include <Eigen/Core>
#include <iostream>
#include <vector>
using std::cout;
using std::endl;
int main(int argc, char *argv[])
{
std::vector<int> dat(4);
int i = 0;
dat[i] = i + 1; i++;
dat[i] = i + 1; i++;
dat[i] = i + 1; i++;
dat[i] = i + 1;
typedef Eigen::Matrix<int, -1, -1, Eigen::ColMajor> Cm;
Eigen::Map<Cm> m1(dat.data(), 2, 2);
cout << m1 << endl << endl;
typedef Eigen::Matrix<int, -1, -1, Eigen::RowMajor> Rm;
Eigen::Map<Rm> m2(dat.data(), 2, 2);
cout << m2 << endl << endl;
return 0;
}
输出:
1 3
2 4
1 2
3 4
相关文章:
- 如何调整 std::vector of Eigen::MatrixXd 的大小
- 将 MatrixXd 的行传递给要修改的函数,而不在 Eigen 中创建副本
- 如何获取Eigen::MatrixXd的行数和列数
- 编译器认为我的MatrixXd构造是一个函数而不是成员
- 将 Eigen::MatrixXd 转换为 arma::mat 并在新对象上制作副本
- 将 Eigen::MatrixXd 矩阵转换为 cgal 容器类型
- Eigen:将真实和想象的MatrixXd映射到MatrixXcd
- NVCC编译了特征库,并在运行时失败的结构中的MatrixxD大小
- Eigen::MatrixXd.block assignment using a std::vector
- eigen C 不能反向matrixxd
- 关于 Eigen::MatrixXd 逐列计算的问题
- 将eigen :: arrayxxd转换为eigen :: matrixxd
- 有没有一种直接、快速的方法可以将列表"map"到<VectorXd> MatrixXd?
- eigen :: llt&lt;eigen :: matrixxd&gt;具有不完整的类型
- Eigen3/C++:使用 Vector3d 平铺 MatrixXd
- Un-flatten Eigen::VectorXd to Eigen::MatrixXd
- c++ lambda 函数,用于将 Eigen::VectorXd 转换为 Eigen::MatrixXd
- C :如何将std ::向量转换为eigen :: matrixxd
- 指向eigen matrixxd的子行,表现得像vectorxd
- 将数据从 std::vector 复制到 Eigen's MatrixXd in C++