gpt4 book ai didi

c++ - Eigen :使用函数创建 3D 数组

转载 作者:太空宇宙 更新时间:2023-11-04 12:30:34 24 4
gpt4 key购买 nike

我刚开始在我的项目中使用 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 数组的好方法吗?

是否有将 3D 数组与 Eigen 一起使用的标准化方法?

非常感谢。

最佳答案

对我来说,最简单且最不容易出错的方法是使用 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 一起使用,必须使用上述包含和对齐的分配器,参见 here .

关于c++ - Eigen :使用函数创建 3D 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58776983/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com