c – 将Eigen矩阵转换为c数组的性能有效方法是什么,以便我可以使用gsl

我在大多数代码中使用Eigen,但我想使用GSL的Miser或Vegas monte-carlo集成.我需要将Eigen的向量转换为c的双精度数组
什么是最好的方法呢?

Matrix<double,3,1> --> c_array []

解决方法:

我之前和Eigen合作过……

通常,为了简单访问内部数组数据,如mentioned by user janneb in this thread,您只需要invoke data()

Vector3d v;
// Operations to add values to the vector.
double *c_ptr = v.data();

如果希望迭代各个值以执行某些操作,则需要迭代每一行(.row(index))和列(.col(index)),具体取决于要在目标中放置的矩阵顺序向量.

在您的特定示例中,您只需要迭代行:

Matrix<double,3,1> --> c_array []

你想要调用.col(0).如果出现类似需求,the specific documentation is always helpful!

所以你最终会得到类似的东西(假设你想使用三行单列矩阵):

Vector3d v;
// Operations to add values to the vector.
for (int i=0; i<v.rows(); ++i)
  c_array[i] = v(i,0);

希望有所帮助.

上一篇:Ubuntu系统下实现把文件移动至别的文件夹下


下一篇:c – 特征透视投影矩阵