【发布时间】:2022-01-18 22:26:43
【问题描述】:
可能是一件非常简单的事情,但我是 C++、Eigen 等的新手。
我有一个有 n 行的 MatrixXD。每行包含 3 个点 (x,y,z),我有一个函数,该函数将 vector3d 类型指针作为输入。我想遍历 MatrixXd 的所有行 n 并将每一行作为向量传递给我的函数。
我认为它是访问 MatrixXd 指针的组合 - 可能是这样的:
int r = mydata.rows();
int c = mydata.cols();
for (int i = 0; i < r; ++i)
{
for (int j = 0; j < c; ++j)
{
myObject.myfunction(&mydata(i,j));
}
}
并使用返回的指针在每一行(即每次迭代)上调用我的函数。
更新 1: 这似乎可行。但是,我需要让 mydata(i,j) 返回指针而不是数据。
我想我可以看到另一个问题:在当前形式中,我认为这只是返回 i,j 处的元素,但我实际上需要返回一个指向 Vector3D 的指针。 data.row(i) 可能适用于此吗?
更新 2:
这样的东西可能更符合我的需要。仍然无法正常工作。我删除了 & - 这很有意义 - 现在它正在工作。
int r = data.rows();
int c = data.cols();
for (int i = 0; i < r; ++i)
{
myObject.myFunction(data.row(i));
}
如果我走在正确的道路上,您能否告诉我一些想法,如何解决这个问题或您需要哪些其他细节来帮助我更多?
【问题讨论】:
-
data.row(i)不会“返回指向 Vector3D 的指针”。data.row(i)的结果可以转换为Vector3d,这似乎是您所需要的。 (它不如使用std::vector<Eigen::Vector3d>或Eigen::Matrix<double, Eigen::Dynamic, 3, Eigen::RowMajor>而不是MatrixXd高效)