八度值维度

Octave value dimensions

本文关键字:八度      更新时间:2023-10-16

我在c++代码中使用Octave。我试着求出out

的每个元素的维数
octave_value_list out = feval (q, in, 1);

我用

dim_vector x=out(0).dims();

根据dim-vector.h,它最多只能支持7个维度。是否有任何方法可以获得out的每个元素的行,列和页面?

首先,需要纠正您的前提中的一个错误:

根据dim-vector.h,它最多只能支持7维。

不是真的。标题说的是只有最多7个维度的构造函数。在此之上,你必须自己增加维度的数量并设置它们的长度。

比较下列相等的:

// create dim_vector for 5x5x5 array
dim_vector d1 = dim_vector (5, 5, 5);
dim_vector d2 = dim_vector ();
dim_vector d3 = d2.redim (3);
d3(2) = 5;
d2.resize (3, 5);

要生成7维以上的dim_vectors,可以:

// 10 dimensional dim_vector of size 5x5x5...x5
dim_vector d = dim_vector ();
d.resize (10, 5);

参见氧开发文档中的dim_vector。它们对当前的开发资源更完整。


现在,回答你的具体问题

是否有任何方法可以获得out的每个元素的行,列和页面?

仅索引您从octave_value_list中的每个octave_value中获得的dim_vector

octave_value_list out = feval (q, in, 1);
for (octave_idx_type out_i = 0; out_i < out.length (); out_++)
  {
    dim_vector d = out(out_i).dims ();
    for (octave_idx_type di = 0 ; di < d.length (); di++)
      std::cout << "Length of dimension " << di << ": " << d(di) << std:endl;
  }