gpt4 book ai didi

c++ - 从双指针在 oct 文件中创建 NDArray

转载 作者:太空狗 更新时间:2023-10-29 23:15:30 25 4
gpt4 key购买 nike

考虑在 C++ Octave 函数中创建 3 维数组 NDArray 的问题。

我有一个双指针 double* ptr 和来自 Armadillo cube 的维度 int dim[3]。我找到了一个很有前途的 NDArray constructor在 Octave 文档中:

NDArray::NDArray    (   
double * sdata,
octave_idx_type slen,
octave_idx_type * adims,
void * arep
)

我找不到关于参数是什么的任何描述,但我做了这样的猜测:sdata 似乎是原始数据指针,slen adims 似乎分别是长度和暗淡 vector 。但是,arep 应该是什么?

最佳答案

The source dNDArray.h 说

// For jit support only

所以好像不太确定用。

来自 the octave documentation ,

Define the dimensions of the matrix or array with a dim_vector which has the same characteristics as the vector returned from size. For example:

dim_vector dv (2); dv(0) = 2; dv(1) = 3;  // 2 rows, 3 columns Matrix
a (dv);

This can be used on all matrix and array types.

但是这个构造函数被弃用了。相反,使用

NDArray a (dim_vector(dim[0], dim[1], dim[2]));

然后遍历 (i, j, k) 索引将立方体复制到 Octave 数组

double* a_vec = a.fortran_vec ();
for (int i = 0; i < dim[0]; i++) {
for (int j = 0; j < dim[1]; j++) {
for (int k = 0; k < dim[2]; k++) {
*a_vec++ = armadillo_cube(i, j, k);
}
}
}

关于c++ - 从双指针在 oct 文件中创建 NDArray,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28900153/

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