QCustomplot 在采集信号领域的应用


自然界中的物理过程、传感器和传感器网络、电路和电子设备、通信系统等都是模拟信号的来源。通过可视化模拟信号,可以帮助研究人员直观地观察信号的形态、幅度、频率、相位等特征。

 

可视化使得信号的特征更加清晰明了,有助于研究人员理解信号的行为和性质但是可以用于可视化绘制图表的开源库较多通过比较常用开源库选择最适合项目需求的库,以实现高质量的数据可视化。

一、常用的几种开源库:

1QCustomPlot:

优点:

Ø 灵活性高,可以通过自定义图层和元素来实现高度定制的图表。

Ø 功能丰富,提供了各种类型的图表,如折线图、散点图、柱状图等。

Ø 可以与 Qt 框架无缝集成,使用方便。

Ø 支持交互性,例如放大缩小、拖动等操作。

 

缺点:

Ø 绘制大量数据时,性能可能较差。

 

2QChart:

优点:

Ø QChart Qt 框架自带的图表库,与 Qt 其他组件无缝集成,使用方便。

Ø 官方文档和示例丰富,学习曲线较平缓。

Ø 提供了丰富的图表类型和样式,支持动画效果。

 

缺点:

Ø 功能相对较少,不如其他库灵活。

Ø 定制性相对较弱,难以实现一些高级需求。

3Qwt:

优点:

Ø 提供了丰富的图表类型和样式,功能较为全面。

Ø 具有较好的绘图性能,适用于绘制大量数据。

Ø 支持多种交互功能,如放大缩小、鼠标追踪等。

 

缺点:

Ø  Qt 框架集成较为复杂,需要额外的安装和配置。

Ø 缺乏官方文档和示例,学习曲线较陡峭。

 

小结:QCustomPlot因具备轻量级、易用性、高性能、丰富的功能和强大的社区支持等优点,成为了信号采集领域中广泛使用的可视化库。

二、QCustomplot介绍

QCustomPlot是一个用Qt应用程序中绘制高质量图表和图形的开源C++提供了一个易于使用的API,允许开发人员创建各种类型的图表,如线图、散点图、柱状图、饼图等

 


 1 支持绘制的图形

1QCustomplot特点

Ø 灵活性:QCustomPlot允许开发者对图表进行高度自定义。实现对轴标签、刻度、范围以及图表的样式、颜色和外观等元素的灵活控制

Ø 交互性:开发者可以通过缩放、平移、选择和编辑图表中的元素来与图表进行交互。从而更自由地浏览和分析数据。

Ø 高质量绘图:QCustomPlot提供了高质量的绘图功能,支持抗锯齿渲染,可以生成清晰、平滑的图表。

Ø 多种图表类型:QCustomPlot支持多种常见的图表类型,如线图、散点图、柱状图、饼图等。开发人员可以选择适合自己应用需求的图表类型。

Ø 轻量级:QCustomPlot是一个轻量级的库,不依赖于其他第三方库,易于集成到Qt应用程序中。

 

通过使用QCustomPlot,开发人员可以快速、简便地在Qt应用程序中添加交互式和可定制的图表功能,以满足数据可视化和分析的需求。

2QCustomplot源码解读

 图 2 图表组成

 3 绘制元素类

 

① 类结构:QCustomPlot 的核心类是 QCPLayerable,是绘制图表的主要控件QCPLayerable包含了许多子类,如 QCPGraphQCPBarsQCPAxis 等,分别用于绘制不同类型的图表元素。

 

② 绘图逻辑:QCustomPlot 使用 QPainter 进行绘图操作。可以通过重写 QCustomPlot paintEvent 函数,在绘图时根据各个图表元素的属性和数据进行绘制。

 

③ 坐标轴和标签:QCustomPlot 提供了灵活的坐标轴和标签定制选项。使用 QCPAxis 类来表示坐标轴,并提供了一系列函数来设置坐标轴的范围、刻度、标签等属性。

 

④ 图表元素:QCustomPlot 支持多种图表元素,如线图、柱状图、散点图等。每种图表元素都有对应的类,如 QCPGraphQCPBarsQCPScatter 等。这些类提供了设置图表元素样式、数据和属性的函数。

 

⑤ 交互性:QCustomPlot 支持交互式操作,如缩放、平移、选取等。可以通过重写 QCustomPlot 的事件处理函数,捕获鼠标和键盘事件,并根据用户的操作进行相应的处理。

 

⑥ 图表更新和重绘:QCustomPlot 提供了函数来更新和重绘图表。当数据发生变化时,可以调用相应的函数来更新图表的显示。QCustomPlot 会根据新的数据进行重绘,并更新图表的外观。

3QCPLayerable 

功能概述:

 

Ø QCPLayerable 类是 QCustomPlot 图表库中的一个基类,用于表示可以添加到图表的可图层对象。

 

Ø 可图层对象可以是图形元素、文本标签、图例、色标等,可以在图表上进行绘制和操作。

 

 常用函数:

 

Ø setLayer(QCPLayer *layer):设置图层对象所属的图层。图层决定了绘制的顺序和层次关系。

Ø layer():获取图层对象所属的图层。

Ø setVisible(bool visible):设置图层对象的可见性。

Ø visible():获取图层对象的可见性。

Ø setSelectable(bool selectable):设置图层对象是否可选中。

4QCPGraph 类的使用

QCPGraph 类是 QCustomPlot 图表库中的一个重要类,用于绘制和管理图表中的折线图。

 

功能概述:

 

Ø QCPGraph 类是 QCustomPlot 的子类,用于绘制折线图。

Ø 能够显示一系列 x-y 坐标对应的数据点,并通过直线或曲线将这些点连接起来。

Ø QCPGraph 可以定制化的样式,包括线条颜色、线型、数据点形状、数据点颜色等。

三、QCustomplot 在采集信号领域的应用

1、应用实例

使用采集卡将相关模拟信号转换为计算机可以处理的数字信号,通过PCIE、网口等将信号给计算机,从而进行精确和灵活的信号处理和分析。使用采集卡以80MHz的采样率连续地采集两个通道的信号,并通过输出频率为25MHz的方式将数字信号输出。每个采样点的幅度将使用12位的位深度进行量化,通过QCustomplot将实际信号进行显示,然后对此段信号进行分析。

 4- 应用实例

时域分析

 

时域分析是对信号在时间域上进行分析的方法,主要关注信号的时间变化和波形特征。通过观察信号的振幅随时间的变化情况,揭示信号在时间轴上的特性和行为。

 

如下图所示,使用QCustomplot绘制出时域信号图,通过观察波形的峰值和谷值,可以了解信号的振幅大小。如果信号是周期性的,时域图中会显示出重复的波形。通过观察波形的重复模式,可以观察出信号的周期和振幅。


 5 采集信号的周期和振幅

时间变化:时域图显示了信号的振幅随时间的变化情况。通过观察波形的形状和变化趋势,可以了解信号到信号在不同时间段周期变化。


 

 6 采集信号的时间变化

频谱分析

 

功率谱是频谱分析的一种形式,它表示信号在不同频率上的功率或能量分布。功率谱提供了信号在频率域上的能量或功率信息,可以用来分析信号的频率特性和频率成分的强度

 

功率谱图显示了信号在不同频率上的功率分布情况。通过观察功率谱图中的能量密度或功率密度,可以知道此段信号在5MHz10MHz25MHz30MHz中均有分布。功率谱图中的高功率区域表示信号中的主要频率成分。通过观察功率谱图中的峰值或高功率区域,可以确定此段信号中的主要频率25MHz


 7 采集信号的功率谱


时频分析是将信号同时在时域和频域上进行分析的方法,用于研究信号在时间和频率上的变化特性。它可以提供关于信号的时间变化和频率成分的信息,并揭示信号在时间和频率上的相互关系。

 

由时频图可以看出此段信号随着时间的变化,频率都是稳定不变的,根据颜色的强度可知此信号的主要频率为25MHz。


 8 采集信号的时频

2数据筛选和处理

可以显示某一点的数据坐标,可以用于对采集到的数据进行筛选和处理。通过使用QCustomPlot提供的交互式功能,可以选择和操作绘图区域中的数据点,从而实现数据的筛选和处理。


 9 数据筛选

 

总结:

QCustomPlot信号采集与分析的优秀伙伴提供了丰富的配置选项,可以定制化图表的外观和行为,满足不同需求。它支持多种类型的图表展示,包括曲线图、柱状图、散点图等,同时还提供了高级功能,如多个坐标轴、数据缩放和平移、数据点的交互操作等。

 

通过QCustomPlot库,可以将采集到的信号以直观的方式展示出来,更好地观察和分析信号的特征。同时,它也为信号处理和数据分析提供了便利,例如频谱分析、时域分析等。这对于科学研究、工程控制等领域都具有重要意义。


028-87409729

: 9:00-18:00

17348136089 

: 7*24h