Eigen中的典型vec算子

时间:2016-08-25 10:44:21

标签: eigen

在特征中实现vec - 运算符的最佳(规范)方法是什么?我确信这个无处不在的运算符会被实现,但我在文档中找不到它。

目前,对于矩阵M,我这样做:

Eigen::Map<Eigen::VectorXd> tmp(nullptr, 0);
new (&tmp) Eigen::Map<Eigen::VectorXd>(M.data(), M.size());

1 个答案:

答案 0 :(得分:1)

conservativeResize,这不是您正在寻找的,因为这实际上可能会改变某些值。就个人而言,我使用你的方法(除了新的位置)。您还可以指定地图已对齐。 Map是一种使用不同视图查看相同内存的方法(例如重新整形)。如果需要实际的重塑对象,可以创建副本(通过Map)。如果大小相同,您也可以使用resize这是一个无操作。我不认为调整大小将适用于固定大小的矩阵,但是地图会。运行下面的代码作为示例。

Eigen::MatrixXf mat;
mat.resize(3,3);
mat << 1, 2, 3, 4, 5, 6, 7, 8, 9;
std::cout << mat << "\n\n";
mat.resize(9, 1);
std::cout << mat << "\n\n";
mat.conservativeResize(1, 9);
std::cout << mat << "\n\n";