• 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!-图片走丢了-打个广告-欢迎来博客园关注“木三百川”

  • 相关阅读:
    1018 Public Bike Management (动规暴力美学)
    爬虫基本原理
    Docker之自定义镜像上传阿里云
    【论文阅读】基于混淆的加强网络安全的方法
    微服务设计原则:构建弹性和可维护的应用
    ESP8266与STC8H8K单片机联动——天气时钟
    golang获取时区报错的问题
    你不知道的React Developer Tools,20 分钟带你掌握 9 个 React 组件调试技巧
    【回归预测-lssvm】基于粒子群算法优化最小二乘支持向量机lssvm实现数据回归预测附matlab代码
    Timer和ScheduledThreadPoolExecutor的区别及源码分析
  • 原文地址:https://www.cnblogs.com/young520/p/17438635.html