【问题标题】:FFTW in Qt CreatorQt Creator 中的 FFTW
【发布时间】:2020-02-17 13:48:17
【问题描述】:

我尝试制作一个从 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);
}

我希望有人可以帮助我。 谢谢。

【问题讨论】:

  • 你永远不会初始化N
  • 是的。在这种情况下,这是基本示例。但在完整的项目中,我让 N 初始化并崩溃
  • 请编辑您的问题以显示可用于重现问题的真实代码(最好是minimal reproducible example)。

标签: windows qt fftw


【解决方案1】:

这与 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。当然,您希望对 RAM 中 in 的任何内容进行傅立叶变换。这是一件很酷的事情。 :)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-14
    • 2023-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-15
    • 2016-11-08
    相关资源
    最近更新 更多