请选择 进入手机版 | 继续访问电脑版

硬汉嵌入式论坛

 找回密码
 立即注册
查看: 508|回复: 3
收起左侧

[Qt] QT调用FFTW库有问题

[复制链接]

17

主题

68

回帖

119

积分

初级会员

积分
119
QQ
发表于 2024-10-30 10:02:51 | 显示全部楼层 |阅读模式
想问一下大家有没有使用过QT添加fftw的库,我不知道为啥第一次调用的时候是可以的,然后程序运行成功了。但是第二天再打开工程文件就有问题了
微信图片_20241030095827.png 微信图片_20241030095823.png 这个是我第一次的结果还有matlab的对比,结果不对的原因应该是我绘制的原因,现在主要是啥呢?QT运行程序直接就异常,我不知道是为什么?
if (seriesList.isEmpty()) { // 检查是否有数据序列        QMessageBox::warning(this, tr("Warning"), tr("No data series available."));        return;    }    QLineSeries *selectedSeries = seriesList.at(currentSeriesIndex); // 获取当前序列    for (QLineSeries *series : seriesList) {   // 使其他序列不可见        series->setVisible(series == selectedSeries);    }    QVector<double> inputData; // 提取序列数据    for (int i = 0; i < selectedSeries->count(); ++i) {        inputData.append(selectedSeries->at(i).y());    }    int N = inputData.size();    fftw_complex *in1 = NULL;    fftw_complex *out = NULL;    in1 = (fftw_complex*) fftw_malloc(sizeof(fftw_complex) * N);    out = (fftw_complex*) fftw_malloc(sizeof(fftw_complex) * N);    if (!in1 || !out) {        qDebug() << "Memory allocation failed for FFTW";        if (in1) fftw_free(in1);        if (out) fftw_free(out);        return;    }    fftw_plan p = fftw_plan_dft_1d(N, in1, out, FFTW_FORWARD, FFTW_ESTIMATE);    if (!p) {        qDebug() << "Failed to create FFTW plan";        fftw_free(in1);        fftw_free(out);        return;    }    // 填充输入数据    for (int i = 0; i < N; ++i) {        in1[0] = inputData; // 实部        in1[1] = 0.0;          // 虚部    }    // 执行FFT    fftw_execute(p);    // 处理输出数据    QVector<double> fftData;    fftData.resize(N / 2);    for (int i = 0; i < N / 2; ++i) {        double real = out[0];        double imag = out[1];        fftData = sqrt(real * real + imag * imag); // 计算幅值    }    // 创建新的FFT序列    QLineSeries *fftSeries = new QLineSeries();    for (int i = 0; i < fftData.size(); ++i) {        fftSeries->append(i, fftData);    }    chart_1->addSeries(fftSeries); // 将FFT序列添加到图表    fftSeries->attachAxis(axisX);    fftSeries->attachAxis(axisY);    ui->graphicsView->update(); // 更新图表显示    // 清理资源    fftw_destroy_plan(p);    fftw_free(in1);    fftw_free(out);
这是我的代码。希望有大佬帮忙看一下
DF4E1E3478B158218C73B5C3864DA728.jpg BAB0D95FBA3A42A932DA4159F89F5468.jpg
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
114092
QQ
发表于 2024-10-30 11:37:42 | 显示全部楼层
帮顶,这库波形刷新速度能做到多少,能做到100帧不,1024*600显示区的情况下
回复

使用道具 举报

17

主题

68

回帖

119

积分

初级会员

积分
119
QQ
 楼主| 发表于 2024-11-3 20:27:16 | 显示全部楼层
eric2013 发表于 2024-10-30 11:37
帮顶,这库波形刷新速度能做到多少,能做到100帧不,1024*600显示区的情况下

我也不会查询,请教一下这个应该怎么测呀?
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
114092
QQ
发表于 2024-11-4 10:55:49 | 显示全部楼层
不吃鱼的猫大人 发表于 2024-11-3 20:27
我也不会查询,请教一下这个应该怎么测呀?

简单的刷新个动态刷新的rand随机波形,看看一秒可以绘制多少次1024*600显示区
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-2-19 23:58 , Processed in 0.487514 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表