如何更改fftw plan(execute)数组大小?

时间:2019-05-15 09:10:48

标签: c++ fftw

我需要你的帮助。

我在主cpp中定义了数组和计划。 然后,我将数据放入数组中,并在子cpp中执行fftw执行。 sub cpp在循环的线程中。

我定义了足够的数组大小,因为数据数量是动态的。 但是fftw正在对整个数组的大小做fft,因此在我的情况下结果不正确。因为数据的数量总是小于数组的大小。

在sub cpp中定义数组是解决问题的简便方法,但是我不想在sub cpp中定义数组,因为sub cpp是循环的。

我只想定义一次数组,并更改独立于数组大小的fft窗口大小。

我该怎么办?

/////// in my main cpp //////
fft_in = (fftw_complex*)fftw_malloc(sizeof(fftw_complex)*nScanSize);
fft_out = (fftw_complex*)fftw_malloc(sizeof(fftw_complex)*nScanSize);
p = fftw_plan_dft_1d(nScanSize, fft_in, fft_out, FFTW_FORWARD, FFTW_ESTIMATE);
/////////////////////////////

/////// in my sub cpp -> looped ///////
for (i = 0; i < nChannelCountAI; i++) {

    for (j = nFirstIndex; j < nLastIndex; j++) {
        fft_in[j - nFirstIndex][0] = RawData[i][j];
        fft_in[j - nFirstIndex][1] = 0;
    }

    fftw_execute(p);
}
/////////////////////////////

0 个答案:

没有答案