考虑在C ++ Octave函数中创建三维数组NDArray
的问题。
我从犰狳double* ptr
获得了双指针int dim[3]
和尺寸cube
。我在Octave docs中找到了一个很有前途的NDArray
constructor:
NDArray::NDArray (
double * sdata,
octave_idx_type slen,
octave_idx_type * adims,
void * arep
)
我找不到任何关于参数的描述,但我做了这个猜测:sdata
似乎是原始数据指针,slen
和adims
似乎是长度和昏暗的矢量分别。但是,假设arep
是什么?
答案 0 :(得分:0)
// For jit support only
因此似乎无法使用。
使用
dim_vector
定义矩阵或数组的尺寸 具有与从size返回的向量相同的特征。对于 例如:dim_vector dv (2); dv(0) = 2; dv(1) = 3; // 2 rows, 3 columns Matrix a (dv);
这可用于所有矩阵和数组类型。
但是这个构造函数已被弃用。相反,使用
NDArray a (dim_vector(dim[0], dim[1], dim[2]));
然后循环(i,j,k)索引以将立方体复制到八度数组
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);
}
}
}