特征:创建一个具有函数的三维阵列



我刚开始在我的项目中使用Eigen,我意识到它不支持3D阵列。因此,我决定制作一个函数,获取数组类型的指针并初始化Eigen 3D数组。''

ArrayXXf* Array3DInit (ArrayXXf *&array, int dimension[], float val){
array = new ArrayXXf [dimension[0]];
for (int i=0; i<dimension[0]; i++){
array[i] = (ArrayXXf::Ones(dimension[1], dimension[2])*val);
}
return array;
}

''

由于我们是动态分配2D阵列的,我创建了另一个函数来删除初始化的3D阵列,如下所示,

void Array3Ddel (ArrayXXf *&array){
delete []array;
}

问题是,这是创建/删除具有Eigen的三维数组的好方法吗?

有没有一种标准化的方法来使用具有特征的3D阵列?

非常感谢。

对我来说,最简单、最不容易出错的方法是使用std::vector:

#include <Eigen/StdVector>
using Matrix = Eigen::Matrix<double, Eigen::Dynamic, Eigen::Dynamic>;
using Vector = std::vector<Matrix, Eigen::aligned_allocator<Matrix>>;
Matrix m(2,2);
m << 1.0, 2.0, 3.0, 4.0;
Vector vec;
vec.push_back(m);

要将std::vector与Eigen一起使用,必须使用上面的include和对齐的分配器,请参阅此处。

相关内容

  • 没有找到相关文章

最新更新