如何对c++;在c++; 我有一个C++文件,它读取一些数据作为浮点数组。在这些方面,我想应用一些倍频程函数(e.q.fft)。我该怎么做?我是否必须首先将Float\u t转换为一个倍频程变量? 谢谢

如何对c++;在c++; 我有一个C++文件,它读取一些数据作为浮点数组。在这些方面,我想应用一些倍频程函数(e.q.fft)。我该怎么做?我是否必须首先将Float\u t转换为一个倍频程变量? 谢谢,c++,octave,C++,Octave,我有: int main() { Float values[10]; //do magic with octave, e.q. fft // store the data back into values or keep them (?) } 我知道我可以做到以下几点: int main() { Float values[10]={0,1,2,3,4,5,6,7,8,9}; Matrix a_matrix = Matrix (2,2); a_matrix(0,0) = values[0]

我有:

int main()
{
Float values[10];

//do magic with octave, e.q. fft

// store the data back into values or keep them (?)
}
我知道我可以做到以下几点:

int main()
{
Float values[10]={0,1,2,3,4,5,6,7,8,9};

Matrix a_matrix = Matrix (2,2);
a_matrix(0,0) = values[0];

cout << "Matrix: " << a_matrix << endl;
}
intmain()
{
浮点值[10]={0,1,2,3,4,5,6,7,8,9};
矩阵a_矩阵=矩阵(2,2);
a_矩阵(0,0)=值[0];

coutPantxo给了您正确的答案。为了完整起见,我将其添加到这里:

由于fft和相关函数是内置的,您可能可以包括 并直接呼叫Ffft(无需 您的代码中需要feval) 使用mkocfile编译并适用于我:


你试过做什么?展示你的代码并解释问题所在are@UnholySheep首先谢谢!我对问题进行了一些编辑,希望现在可以理解?@Ben这可能会有帮助:(特别是oct和单机版部分)@谢谢!不幸的是,我已经知道了。但是我不知道如何使用fft。在纪录片中,只给出了:fft(x)如果你想在C++中计算FFT和IFFT,你应该直接使用。GNU八度也使用FWTWITH,听起来不正确。这似乎产生了一个OCTALE文件,用于八度以内。问题似乎要求C++单独使用八度表库。@ TASOS:当然,只有{{} }中的部分是使用<代码> Ffft()的。
。在oct文件或独立文件中调用它并不重要application@Andy谢谢!很抱歉交叉发帖。我有点害怕,因为有这么多的反对票。在cs.ex上,我的4篇帖子中有3篇被更少的反对票阻止。所以我想在再次发生这种情况之前,我会选择自然平台。但无论如何,我会按照讨论的内容现在就到了。非常感谢!在我的机器上也可以工作,现在可以根据我的东西来实现。非常感谢!
//////////////////////////testfft.cc//////////////////
#include <octave/oct.h>
#include <octave/builtin-defun-decls.h>

DEFUN_DLD(testfft, args, nargout, "\
testfft\n\
")
{
  octave_value_list retval;
  int nargin = args.length ();

  retval = Ffft (args);
  return retval;
}
/////////////////////////////////////////////////////

Compile and test in Octave:

mkoctfile testfft.cc
x = 1:10;
all (testfft (x) == fft (x))
// file main.cc
// compile and link with mkoctfile --link-stand-alone main.cc -o bentest
#include <iostream>
#include <octave/oct.h>
#include <octave/builtin-defun-decls.h>

int main ()
{
  Matrix a = Matrix (1,4);
  for (int k = 0; k < a.columns (); ++k)
    a(0, k) = k % 2;

  std::cout << "in:" << a << std::endl;

  octave_value_list in;
  in(0) = a;

  octave_value_list out = Ffft (in, 1);
  ComplexMatrix o = out(0).complex_matrix_value ();
  std::cout << "out:" << o << std::endl;

  return 0;
}
in: 0 1 0 1

out: (2,0) (0,0) (-2,0) (0,0)