我试着写一个从IQ数据计算FFTW的程序。Windows 10 64位。Qt Creator 4.8.2基于Qt 5.12.2 (MSVC 2015,32位)当我使用
fftw_plan_dft_1d(N, in, out, FFT_FORWARD, FFTW_ESTIMATE);我下载了fftw-3.3.5-dll64和dll32,结果是一样的。
.pro
INCLUDEPATH += $$PWD/fftw-3.3.5-dll32
QMAKE_LIBDIR += $$PWD/fftw-3.3.5-dll32
LIBS += $$PWD/fftw-3.3.5-dll32/ -llibfftw3-3
LIBS += $$PWD/fftw-3.3.5-dll32/ -llibfftw3f-3
LIBS += $$PWD/fftw-3.3.5-dll32/ -llibfftw3l-3.cpp
include "fftw3.h"
int main()
{
int N;
fftw_complex *in, *out;
fftw_plan myPlan;
in = (fftw_complex*) fftw_malloc(sizeof(fftw_complex)* N);
out = (fftw_complex*) fftw_malloc(sizeof(fftw_complex)* N);
fftw_plan_dft_1d(N, in, out, FFT_FORWARD, FFTW_ESTIMATE); //this line crashed the program.
fftw_execute(myPlan);
fftw_destroy_plan(myPlan);
fftw_free(in);
fftw_free(out);
}我希望有人能帮助我。谢谢。
发布于 2020-02-17 23:14:06
这与Windows无关,也与QtCreator无关。你必须正确地编写程序。
fftw_plan_dft_1d(N, in, out, FFTW_FORWARD, FFTW_ESTIMATE); //this line crashed the program.
这不是崩溃的那条线。这条线很好。下一个将完全意料之中地崩溃,因为您从未分配过myPlan。
myPlan = fftw_plan_dft_1d(N, in, out, FFTW_FORWARD, FFTW_ESTIMATE);
将更正您的问题。前提是您将N设置为合理的值。我相信你至少也应该设置in。当然,你想要傅立叶变换,在你的随机存储器中,任何发生在in上的东西。这是件很酷的事情。:)
https://stackoverflow.com/questions/60263887
复制相似问题