我正在尝试使用fftw库(link to FFTW documentation)实现DFT。
所有库都已正确链接,项目构建得很好。但是,在调用fftw库中的任何函数时,代码都不会运行。
#include <iostream>
#include <fftw3.h>
using namespace std;
int main() {
int vectorSize = 100;
cout << vectorSize << endl;
fftw_complex vec[vectorSize], vecOut[vectorSize];
for(int i = 0; i < vectorSize; i++) {
vec[i][0] = i;
vec[i][1] = 1;
}
// Call to function to create an FFT plan
fftw_plan plan = fftw_plan_dft_1d(vectorSize, vec, vecOut, FFTW_FORWARD, FFTW_ESTIMATE);
cout << "test" << endl;
return 0;
}
如果我注释实例化fftw_plan的行,则代码输出100并按预期“测试”。据我所知,构建中没有问题。我真的找不到任何描述类似问题的帖子。
我在eclipse上运行它,使用MinGW和32位版本的预编译二进制文件可用于windows(download link)。
任何帮助都会非常感激:)
答案 0 :(得分:0)
Fftw要求输入/输出为16字节对齐。在堆栈上声明数组时,无法保证这一点。所以你需要调用fftw_malloc或其他函数来分配数组。此外,您的代码仅创建计划但不执行它,因此不会对输入数据执行fft。