我需要你的帮助。
我在我的主 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);
}
/////////////////////////////
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
471 次 |
| 最近记录: |