028-87409729
: 9:00-18:00
17348136089
: 7*24h
自然界中的物理过程、传感器和传感器网络、电路和电子设备、通信系统等都是模拟信号的来源。通过可视化模拟信号,可以帮助研究人员直观地观察信号的形态、幅度、频率、相位等特征。
可视化使得信号的特征更加清晰明了,有助于研究人员理解信号的行为和性质。但是可以用于可视化绘制图表的开源库较多,通过比较常用开源库选择最适合项目需求的库,以实现高质量的数据可视化。
n 优点:
Ø 灵活性高,可以通过自定义图层和元素来实现高度定制的图表。
Ø 功能丰富,提供了各种类型的图表,如折线图、散点图、柱状图等。
Ø 可以与 Qt 框架无缝集成,使用方便。
Ø 支持交互性,例如放大缩小、拖动等操作。
n 缺点:
Ø 绘制大量数据时,性能可能较差。
n 优点:
Ø QChart是 Qt 框架自带的图表库,与 Qt 其他组件无缝集成,使用方便。
Ø 官方文档和示例丰富,学习曲线较平缓。
Ø 提供了丰富的图表类型和样式,支持动画效果。
n 缺点:
Ø 功能相对较少,不如其他库灵活。
Ø 定制性相对较弱,难以实现一些高级需求。
n 优点:
Ø 提供了丰富的图表类型和样式,功能较为全面。
Ø 具有较好的绘图性能,适用于绘制大量数据。
Ø 支持多种交互功能,如放大缩小、鼠标追踪等。
n 缺点:
Ø 与 Qt 框架集成较为复杂,需要额外的安装和配置。
Ø 缺乏官方文档和示例,学习曲线较陡峭。
小结:QCustomPlot因具备轻量级、易用性、高性能、丰富的功能和强大的社区支持等优点,成为了信号采集领域中被广泛使用的可视化库。
QCustomPlot是一个用于Qt应用程序中绘制高质量图表和图形的开源C++库,其提供了一个易于使用的API,允许开发人员创建各种类型的图表,如线图、散点图、柱状图、饼图等。
图 1 支持绘制的图形
Ø 灵活性:QCustomPlot允许开发者对图表进行高度自定义。实现对轴标签、刻度、范围以及图表的样式、颜色和外观等元素的灵活控制。
Ø 交互性:开发者可以通过缩放、平移、选择和编辑图表中的元素来与图表进行交互。从而更自由地浏览和分析数据。
Ø 高质量绘图:QCustomPlot提供了高质量的绘图功能,支持抗锯齿渲染,可以生成清晰、平滑的图表。
Ø 多种图表类型:QCustomPlot支持多种常见的图表类型,如线图、散点图、柱状图、饼图等。开发人员可以选择适合自己应用需求的图表类型。
Ø 轻量级:QCustomPlot是一个轻量级的库,不依赖于其他第三方库,易于集成到Qt应用程序中。
通过使用QCustomPlot,开发人员可以快速、简便地在Qt应用程序中添加交互式和可定制的图表功能,以满足数据可视化和分析的需求。
图 2 图表组成
图 3 绘制元素类
① 类结构:QCustomPlot 的核心类是 QCPLayerable,是绘制图表的主要控件。QCPLayerable包含了许多子类,如 QCPGraph、QCPBars、QCPAxis 等,分别用于绘制不同类型的图表元素。
② 绘图逻辑:QCustomPlot 使用 QPainter 进行绘图操作。可以通过重写 QCustomPlot 的paintEvent 函数,在绘图时根据各个图表元素的属性和数据进行绘制。
③ 坐标轴和标签:QCustomPlot 提供了灵活的坐标轴和标签定制选项。使用 QCPAxis 类来表示坐标轴,并提供了一系列函数来设置坐标轴的范围、刻度、标签等属性。
④ 图表元素:QCustomPlot 支持多种图表元素,如线图、柱状图、散点图等。每种图表元素都有对应的类,如 QCPGraph、QCPBars、QCPScatter 等。这些类提供了设置图表元素样式、数据和属性的函数。
⑤ 交互性:QCustomPlot 支持交互式操作,如缩放、平移、选取等。可以通过重写 QCustomPlot 的事件处理函数,捕获鼠标和键盘事件,并根据用户的操作进行相应的处理。
⑥ 图表更新和重绘:QCustomPlot 提供了函数来更新和重绘图表。当数据发生变化时,可以调用相应的函数来更新图表的显示。QCustomPlot 会根据新的数据进行重绘,并更新图表的外观。
①功能概述:
Ø QCPLayerable 类是 QCustomPlot 图表库中的一个基类,用于表示可以添加到图表的可图层对象。
Ø 可图层对象可以是图形元素、文本标签、图例、色标等,可以在图表上进行绘制和操作。
② 常用函数:
Ø setLayer(QCPLayer *layer):设置图层对象所属的图层。图层决定了绘制的顺序和层次关系。
Ø layer():获取图层对象所属的图层。
Ø setVisible(bool visible):设置图层对象的可见性。
Ø visible():获取图层对象的可见性。
Ø setSelectable(bool selectable):设置图层对象是否可选中。
QCPGraph 类是 QCustomPlot 图表库中的一个重要类,用于绘制和管理图表中的折线图。
n 功能概述:
Ø QCPGraph 类是 QCustomPlot 的子类,用于绘制折线图。
Ø 能够显示一系列 x-y 坐标对应的数据点,并通过直线或曲线将这些点连接起来。
Ø QCPGraph 可以定制化的样式,包括线条颜色、线型、数据点形状、数据点颜色等。
使用采集卡将相关模拟信号转换为计算机可以处理的数字信号,通过PCIE、网口等将信号给计算机,从而进行精确和灵活的信号处理和分析。使用采集卡以80MHz的采样率连续地采集两个通道的信号,并通过输出频率为25MHz的方式将数字信号输出。每个采样点的幅度将使用12位的位深度进行量化,通过QCustomplot将实际信号进行显示,然后对此段信号进行分析。
图 4- 应用实例
①时域分析
时域分析是对信号在时间域上进行分析的方法,主要关注信号的时间变化和波形特征。通过观察信号的振幅随时间的变化情况,揭示信号在时间轴上的特性和行为。
如下图所示,使用QCustomplot绘制出时域信号图,通过观察波形的峰值和谷值,可以了解信号的振幅大小。如果信号是周期性的,时域图中会显示出重复的波形。通过观察波形的重复模式,可以观察出信号的周期和振幅。
图 5 采集信号的周期和振幅
时间变化:时域图显示了信号的振幅随时间的变化情况。通过观察波形的形状和变化趋势,可以了解信号到信号在不同时间段周期变化。
图 6 采集信号的时间变化
②频谱分析
功率谱是频谱分析的一种形式,它表示信号在不同频率上的功率或能量分布。功率谱提供了信号在频率域上的能量或功率信息,可以用来分析信号的频率特性和频率成分的强度。
功率谱图显示了信号在不同频率上的功率分布情况。通过观察功率谱图中的能量密度或功率密度,可以知道此段信号在5MHz、10MHz、25MHz、30MHz中均有分布。功率谱图中的高功率区域表示信号中的主要频率成分。通过观察功率谱图中的峰值或高功率区域,可以确定此段信号中的主要频率为25MHz。
图 7 采集信号的功率谱
时频分析是将信号同时在时域和频域上进行分析的方法,用于研究信号在时间和频率上的变化特性。它可以提供关于信号的时间变化和频率成分的信息,并揭示信号在时间和频率上的相互关系。
由时频图可以看出此段信号随着时间的变化,频率都是稳定不变的,根据颜色的强度可知此信号的主要频率为25MHz。
图 8 采集信号的时频
可以显示某一点的数据坐标,可以用于对采集到的数据进行筛选和处理。通过使用QCustomPlot提供的交互式功能,可以选择和操作绘图区域中的数据点,从而实现数据的筛选和处理。
图 9 数据筛选
总结:
QCustomPlot是信号采集与分析的优秀伙伴。其提供了丰富的配置选项,可以定制化图表的外观和行为,满足不同需求。它还支持多种类型的图表展示,包括曲线图、柱状图、散点图等,同时还提供了高级功能,如多个坐标轴、数据缩放和平移、数据点的交互操作等。
通过QCustomPlot库,可以将采集到的信号以直观的方式展示出来,更好地观察和分析信号的特征。同时,它也为信号处理和数据分析提供了便利,例如频谱分析、时域分析等。这对于科学研究、工程控制等领域都具有重要意义。