Octave c++接口:从矢量复制数据

Octave c++ interface: copy data from vector

本文关键字:复制 数据 c++ 接口 Octave      更新时间:2023-10-16

我将数据存储在一个向量中,我想将其传递到倍频程中进行处理,但我不确定最有效的方法。使用matlab mwArray,我会做一些类似的事情:

vector<float> vec(100, 0.0);
mwArray data_mw(1, 100, mxSINGLE_CLASS);
data_mw.SetData(vec.data(), vec.size());

我想要的是一种类似的将数据转换为八度音阶的方法(我假设是通过FloatMatrix)。有人能给我指正确的方向吗?

在即将发布的4.2版本中将有一个构造函数。当它发布时,您将能够执行:

Array<T> a (your_std_vector, dim_vector (1, 100));

同时,您可以拥有自己的功能:

template<typename T>
Array<T>
array_from_vector (const std::vector<T>& v, const dim_vector& dv)
{
  Array<T> a (dv);
  const T* vd = v.data ();
  T* ad = a.fortran_vec ();
  for (octave_idx_type i = 0; i < a.numel (); i++)
    *ad++ = *vd++;
  return a;
}