我在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_vector,您可以:

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


请参见doxygen dev docs for dim_vector。在当前的开发资源上,它们更加完整。



现在,回答您的特定问题


  我有什么办法可以获取每个元素的行,列和页面?


只需索引从octave_value中每个octave_value_list中获得的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;
  }

关于c++ - Octave 值尺寸,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31773809/

10-16 21:58