• QT 绘制波形图、频谱图、瀑布图、星座图、眼图、语图


    说明

    最近在学中频信号处理的一些东西,顺便用 QT 写了一个小工具,可以显示信号的时域波形图、幅度谱、功率谱、二次方谱、四次方谱、八次方谱、瞬时包络、瞬时频率、瞬时相位、非线性瞬时相位、瞬时幅度直方图、瞬时频率直方图、瞬时相位直方图、眼图、星座图、语谱图、瀑布图。


    1. 实现思路

    工具为纯 C++ 开发,包括频谱计算以及图像可视化。这里简述下实现思路,使用到了以下第三方库:

    频谱计算部分,通过调用 FFTW 的 C++ 接口,同时开启 OpenMP 多核支持,可以获得很快的计算速度,比 MATLAB 还快,工具中的所有频谱都是在点击按钮时现算的。在我的电脑上(8 核 Intel i7-6700HQ CPU @ 2.60GHz),实测对 33554432 长度(2 的 25 次方)的双精度浮点数组进行傅里叶变换,两种方式的耗时如下:

    • MATLAB 的 fft 函数耗时 629 毫秒。
    • C++ 调用 FFTW 接口并开启 OpenMP 多核支持,耗时 390 毫秒。

    图像可视化部分,使用 QCustomPlot 完成图像绘制,并结合 FreeGlut 工具开启 OpenGL 支持,绘图质量及响应速度也得到了较好的提升,大数据显示并进行交互时不会出现卡顿。为了进一步提升速度,还修改了 QCustomPlot 的部分源码,将数据更新接口暴露出来,使用 memcpy() 直接对原始绘图数据所在的内存块进行操作,提升数据更新的速度。主界面如下:

    Oh Shit!-图片走丢了-打个广告-欢迎来博客园关注“木三百川”


    2. 时域波形图

    测试信号:2FSK 调制,调制速率 8888 Baud/s,采样率 284416 Hz,信号频率 62216 Hz 与 79992Hz,文件大小 64 MB。波形显示时做了贝塞尔平滑处理。

    Oh Shit!-图片走丢了-打个广告-欢迎来博客园关注“木三百川”


    3. 幅度谱

    测试信号:2FSK 调制,调制速率 8888 Baud/s,采样率 284416 Hz,信号频率 62216 Hz 与 79992Hz,文件大小 64 MB。

    Oh Shit!-图片走丢了-打个广告-欢迎来博客园关注“木三百川”


    4. 功率谱

    测试信号:2FSK 调制,调制速率 8888 Baud/s,采样率 284416 Hz,信号频率 62216 Hz 与 79992Hz,文件大小 64 MB。

    Oh Shit!-图片走丢了-打个广告-欢迎来博客园关注“木三百川”


    5. 二次方谱

    测试信号:8PSK 调制,调制速率 8888 Baud/s,采样率 284416 Hz,载波频率 71104 Hz,文件大小 64 MB。

    Oh Shit!-图片走丢了-打个广告-欢迎来博客园关注“木三百川”


    6. 四次方谱

    测试信号:8PSK 调制,调制速率 8888 Baud/s,采样率 284416 Hz,载波频率 71104 Hz,文件大小 64 MB。

    Oh Shit!-图片走丢了-打个广告-欢迎来博客园关注“木三百川”


    7. 八次方谱

    测试信号:8PSK 调制,调制速率 8888 Baud/s,采样率 284416 Hz,载波频率 71104 Hz,文件大小 64 MB。

    Oh Shit!-图片走丢了-打个广告-欢迎来博客园关注“木三百川”


    8. 瞬时包络

    测试信号:8PSK 调制,调制速率 8888 Baud/s,采样率 284416 Hz,载波频率 71104 Hz,文件大小 64 MB。

    Oh Shit!-图片走丢了-打个广告-欢迎来博客园关注“木三百川”


    9. 瞬时频率

    测试信号:2FSK 调制,调制速率 8888 Baud/s,采样率 284416 Hz,信号频率 62216 Hz 与 79992Hz,文件大小 64 MB。

    Oh Shit!-图片走丢了-打个广告-欢迎来博客园关注“木三百川”


    10. 瞬时相位

    测试信号:8PSK 调制,调制速率 8888 Baud/s,采样率 284416 Hz,载波频率 71104 Hz,文件大小 64 MB。

    Oh Shit!-图片走丢了-打个广告-欢迎来博客园关注“木三百川”


    11. 非线性瞬时相位

    测试信号:8PSK 调制,调制速率 8888 Baud/s,采样率 284416 Hz,载波频率 71104 Hz,文件大小 64 MB。

    Oh Shit!-图片走丢了-打个广告-欢迎来博客园关注“木三百川”


    12. 瞬时幅度直方图

    测试信号:8PSK 调制,调制速率 8888 Baud/s,采样率 284416 Hz,载波频率 71104 Hz,文件大小 64 MB。

    Oh Shit!-图片走丢了-打个广告-欢迎来博客园关注“木三百川”


    13. 瞬时频率直方图

    测试信号:2FSK 调制,调制速率 8888 Baud/s,采样率 284416 Hz,信号频率 62216 Hz 与 79992Hz,文件大小 64 MB。

    Oh Shit!-图片走丢了-打个广告-欢迎来博客园关注“木三百川”


    14. 瞬时相位直方图

    测试信号:8PSK 调制,调制速率 8888 Baud/s,采样率 284416 Hz,载波频率 71104 Hz,文件大小 64 MB。

    Oh Shit!-图片走丢了-打个广告-欢迎来博客园关注“木三百川”


    15. 眼图

    测试信号:8PSK 调制,调制速率 8888 Baud/s,采样率 284416 Hz,基带信号,文件大小 64 MB。

    Oh Shit!-图片走丢了-打个广告-欢迎来博客园关注“木三百川”


    16. 星座图

    测试信号:8PSK 调制,调制速率 8888 Baud/s,采样率 284416 Hz,载波频率 71104 Hz,文件大小 64 MB。

    Oh Shit!-图片走丢了-打个广告-欢迎来博客园关注“木三百川”


    17. 语谱图

    测试信号:2FSK 调制,调制速率 8888 Baud/s,采样率 284416 Hz,信号频率 62216 Hz 与 79992Hz,文件大小 64 MB。从计算到显示总耗时不超过 1 秒。

    Oh Shit!-图片走丢了-打个广告-欢迎来博客园关注“木三百川”


    18. 瀑布图

    测试信号:2FSK 调制,调制速率 8888 Baud/s,采样率 284416 Hz,信号频率 62216 Hz 与 79992Hz,文件大小 64 MB。谱线为实时计算。由于 GIF 上传大小限制为 5 MB,录制为 GIF 时做了质量损失。

    Oh Shit!-图片走丢了-打个广告-欢迎来博客园关注“木三百川”

    Oh Shit!-图片走丢了-打个广告-欢迎来博客园关注“木三百川”

  • 相关阅读:
    杰理之充电仓升级及 dut 测试功能【篇】
    Mysql数据库 11.SQL语言 储存过程 下 储存过程管理和游标
    java计算机毕业设计基于安卓Android的升降式停车场管理系统APP
    Rust结构体和枚举类
    RpcProvider的网络服务,以及怎么发布服务方法
    spring @value 注入static 注入静态变量方法
    让EXCEL VBA支持鼠标滚轮,vb6 IDE鼠标滚轮插件原理
    2022年SQL经典面试题总结(带解析)
    840. 矩阵中的幻方。python三连双等 a==b==c
    Compositional Minimax Optimization学习之路
  • 原文地址:https://www.cnblogs.com/young520/p/17438635.html