Armadillo:从矩阵/向量中获取原始数据作为数组

时间:2014-06-03 16:43:19

标签: c++ armadillo

我正在寻找类似的东西:

fmat A     = randu<fmat>(4,5);
float **a  = A.to_array();     // Return matrix as float**

有人知道如何在Armadillo中做到这一点吗?

1 个答案:

答案 0 :(得分:6)

没有返回指针数组的函数。您可以使用memptr() method

访问基础缓冲区
float *a = A.memptr();

您还可以使用colptr() method获取指向任何矩阵列的指针。我不确定为什么你可能需要一个指针数组,但你可以像这样构建一个(未编译和未经测试的代码):

std::vector<float *> av;
av.reserve(A.n_cols);
for (unsigned int i = 0; i < A.n_cols; ++i)
   av.push_back() = A.colptr(i);

float **a = &av[0]; // a remains valid while av is in scope

请注意,Armadillo将数据存储在column-major order