-3

このデータで指定された配列にFFT (この rosettacode.org FFT の C++ 実装: またはC 実装void fft(CArray &x) { ... }を使用する必要がありますか?)を適用しようとしています:

float *x
VstInt32 sampleFrames    // basically the length of the array

私がする時:

fft(x);

私は得る:

error C2664: 'void fft(CArray &)' : cannot convert argument 1 from 'float *' to 'CArray &'

この種のエラーを解決するにはどうすればよいですか?


4

1 に答える 1

1

配列を CArray タイプのエイリアスに変換する必要があります。

http://coliru.stacked-crooked.com/a/20adde65619732f8

typedef std::complex<double> Complex;
typedef std::valarray<Complex> CArray;

void fft(CArray& x)
{   
}

int main()
{
    float sx[] = {1,2,3,4};

    float *x = sx;
    int sampleFrames = sizeof(sx)/sizeof(sx[0]);

    // Convert array of floats to CArray
    CArray ca;
    ca.resize(sampleFrames);
    for (size_t i = 0; i < sampleFrames; ++i)
      ca[i] = x[i];

    // Make call
    fft(ca);
}
于 2016-07-05T10:14:56.423 に答える