首页 > 其他分享 >QT 绘制波形图、频谱图、瀑布图、星座图、眼图、语图

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

时间:2023-05-28 18:55:05浏览次数:43  
标签:Hz 文件大小 8888 QT MB 波形图 星座图 Baud 调制

说明

最近在学中频信号处理的一些东西,顺便用 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!-图片走丢了-打个广告-欢迎来博客园关注“木三百川”

标签:Hz,文件大小,8888,QT,MB,波形图,星座图,Baud,调制
From: https://www.cnblogs.com/young520/p/17438635.html

相关文章

  • 【VS Code+Qt6】拖放操作
    由于老周的示例代码都是用VSCode+CMake+Qt写的,为了不误导人,在标题中还是加上“VSCode”好一些。上次咱们研究了剪贴板的基本用法,也了解了叫QMimeData的重要类。为啥要强调这个类?因为接下来扯到的拖放操作也是和它有关系。哦,对了,咱们先避开一下主题,关于剪贴板,咱们还要说......
  • Qt编写视频监控系统76-Onvif跨网段组播搜索和单播搜索的实现
    一、前言在视频监控行业一般会用国际onvif工具来测试设备是否支持onvif协议,工具的名字叫ONVIFDeviceManager(还有个工具叫ONVIFDeviceTestTool,专用于程序员测试各种数据交互),可以自行搜索下载,此工具位国际官方工具,如果此工具搜索不到摄像机,则说明该摄像机不是真正的onvif摄像......
  • Ubuntu 下创建cmake的qt工程,使用CTK widget模块(cmake 工程配置)
    一、先看 二、假设已经编译好ctk库,对cmakelists.txt进行设置(解决:找不到头文件、未定义啥的错误) 三、目录结构 ......
  • QT显示插件(LinuxFB)及其依赖的驱动(DRM/framebuffer)记录
    关键词:Framebuffer、linuxfb、DRM等等。 QT在Linux中支持多种显示插件,包括EGLFS、LinuxFB、DirectFB、Wayland等。可以通过--platfrom选项指定选择何种插件。比如:./analogclock--platformlinuxfb。QT支持多种显示插件,显示插件打开Linux内核fb设备,Linux内核中GPU/Display驱动......
  • qt6 chart 画k线图
    实现的基本功能:1.显示k线,附赠一个close指标2.根据鼠标移动,画十字线3.跟随鼠标,显示当前k线的一个值。4.可以移动、缩放图形运行环境:qt6.5(其他环境未测试) CMakeLists文件:cmake_minimum_required(VERSION3.14)project(chart5LANGUAGESCXX)set(CMAKE_AUTOUI......
  • Qt 中将std::cout 重定向到 qDebug
    #include<QtCore>#include<iostream>voidcustomMessageHandler(QtMsgTypetype,constQMessageLogContext&context,constQString&msg){QByteArraylocalMsg=msg.toLocal8Bit();switch(type){caseQtDebugMsg:......
  • QT编程: 编写低功耗BLE蓝牙调试助手(Android系统APP)
    由于工作需要,需要利用QT平台完成手机与ble蓝牙的通讯,所以就找了各种资料,算是初步的能够连接完成demo代码,但是依旧有些代码没有理解,比如特性那一片的代码,稍后还得研究啊(对了,这是低功耗蓝牙,不是经典蓝牙,看清楚了,当初不清楚经典蓝牙和低功耗蓝牙,浪费我一个星期,说多了都是泪,下面是代码......
  • Qt系统学习系列目录:订阅必看
    文章目录前言:必看文章目录一.按钮类1.1QAbstractButton(已写)1.2QPushButton(已写)1.2QToolButton(已写)1.3RadioButton1.4CheckBox1.5CommandLinkButton1.6ButtonBox二.单元视图2.1ListView2.2TreeView2.3TableView2.4ColummView三.单元组件3.1ListWidget3.2TreeWidget3......
  • 【毕业设计】QT从入门到实战:实现模仿QQ通讯,也是在校的最后一篇博文。
    文章目录一.前言二.模仿QQ通讯1.介绍2.图例一.前言2019年9月来到泰州职业技术学院,从此,正式开启了我的代码求学之路。2021年7月即将离开泰州职业技术学院,还有半个月的时间,从此,将离开校园,变成一个职场人。早上醒来,班主任在群里通知后天要照毕业照,算起来也就不到两年的时间,你可......
  • Qt窗口关闭和应用程序停止是否调用析构函数的一些说明
    这几天一直在模仿QQ做一个即时通讯软件,过程不是很顺利,表现在窗口关闭,应用程序依旧存在,应用程序异常结束,关闭子窗口,主窗口跟着关闭,所以总结了一些内容,方便日后获取。如果对这个项目有兴趣的话可以前往GitHub:https://github.com/FdogMain/FdogInstantMessagingmain函数中,在栈上创建的......