基于链表数组的多幅波形包络提取方法.pdf

上传人:000****221 文档编号:6066048 上传时间:2019-04-06 格式:PDF 页数:8 大小:369.83KB
返回 下载 相关 举报
摘要
申请专利号:

CN201611161528.2

申请日:

2016.12.15

公开号:

CN106597049A

公开日:

2017.04.26

当前法律状态:

授权

有效性:

有权

法律详情:

授权|||实质审查的生效IPC(主分类):G01R 13/02申请日:20161215|||公开

IPC分类号:

G01R13/02

主分类号:

G01R13/02

申请人:

电子科技大学

发明人:

张沁川; 郭连平; 谭峰; 潘卉青; 焦晓曼

地址:

611731 四川省成都市高新区(西区)西源大道2006号

优先权:

专利代理机构:

成都行之专利代理事务所(普通合伙) 51220

代理人:

温利平;陈靓靓

PDF下载: PDF下载
内容摘要

本发明公开了一种基于链表数组的多幅波形包络提取方法,建立一个动态链表数组,数组长度和一副信号波形长度相同,数组中的数据元素均为链表表头节点,每一个链表中存储同一个采样位置的波形数据,每采集完一幅波形数据即更新数据链表;在每次更新数据时,如果链表长度达到用户设置的包络次数,则删除表头节点;如果最新数据与之前某个节点相同,则将这一旧节点删除,将最新数据添加至链表末尾节点,否则直接将最新数据添加至链表末尾节点;然后对链表进行数据老化处理,避免老旧数据滞留;依次扫描每个链表得到其最大值和最小值,即为对应采样点的包络数据。本发明通过将波形数据存储到动态链表型数组中,实现高精度的多幅波形包络数据提取。

权利要求书

1.一种基于链表数组的多幅波形包络提取方法,其特征在于包括以下步骤:
S1:构建一个长度为L的动态链表数组P,该数组中每个元素P[i]为一个链表的表头节
点,i=0,1,…,L-1,L表示每幅波形数据的采样点数量;
S2:按照预定参数实时采集第1幅波形数据,记其采样点序列为X1,X1[i]表示第1幅波形
的第i个采样点,令链表数组中每个链表的表头节点数据域P[i].data=X1[i],指针域P
[i].next=null;
S3:令波形序号t=2;
S4:按照预定参数实时采集第t幅波形,记其采样点序列为Xt,Xt[i]表示第t幅波形的第
i个采样点;
S5:分别判断每个链表当前的链表节点数量是否小于M,如果是,不作任何操作,否则删
除该链表的表头节点;
S6:对波形中的每个采样点分别创建一个链表节点S[i],其数据域S[i].data=Xt[i],
指针域S[i].next=null;将链表节点S[i].data与数组元素P[i]对应链表中的所有节点的
数据域依次比较,若该链表中的所有节点的数据域都与S[i].data不同,则将S[i]直接添加
到该链表末尾;若有某一节点的数据域与S[i].data相同,则删除该节点后将S[i]添加到该
链表末尾;
S7:判断链表数组P中每个表头节点P[i]所对应的波形数据的序号ti与当前波形数据序
号t之间的差值是否大于预设阈值T,如果t-ti>T,则将该表头节点删除,将下一链表节点
作为表头节点;
S8:依次扫描每个链表,提取该链表所有节点数据域中数据的最大值Roof[i]和最小值
Floor[i],分别作为第i个采样点的上包络值和下包络值,得到信号的包络数据;
S9:判断是否接收到结束指令,如果是,结束信号采集和包络提取,否则令t=t+1,返回
步骤S4。
2.根据权利要求1所述的多幅波形包络提取方法,其特征在于,所述步骤S7中阈值T=
M。

说明书

基于链表数组的多幅波形包络提取方法

技术领域

本发明属于数字信号分析技术领域,更为具体地讲,涉及一种基于链表数组的多
幅波形包络提取方法。

背景技术

信号的包络信息实质上就是提取信号幅度信息,将波形记录中的每个采样点位置
的最大值和最小值存储并构成波形显示,即得到波形的包络信息。包络分析是观测波形抖
动、监察毛刺信号、检测信号漂移等情况的一种很好的方式,应用包络分析可以更加清晰直
观地观察到信号的异常或所需要的结果。包络分析也是工程信号分析的一种常用方法,利
用包络分析方法可以对信号高频成分的低频特征或低频事件进行详细分析。这种方法在机
械测试和故障诊断等领域有着很重要的作用。

单幅波形包络的理论并不复杂,若由人工绘制,直接连接信号的极值就可以得到
信号包络线,在数字信号处理系统中,也可以采用希尔伯特变换法,小波变换法,带通滤波
法等等来提取单幅波形的包络。但是这些包络提取方法都是针对单幅波形数据的,而在数
字三维示波器中,由于其显示对象为多幅波形数据的叠加,所需要提取的包络是由每个采
样点上的极值连接而成的,与单幅波形数据的包络存在较大区别,以上方法就不再适用,需
要研究新的包络提取方法。

发明内容

本发明的目的在于克服现有技术的不足,提供一种基于链表数组的多幅波形包络
提取方法,通过将波形数据存储到动态链表型数组中,实现高精度的多幅波形包络数据提
取。

为实现上述发明目的,本发明基于链表数组的多幅波形包络提取方法包括以下步
骤:

S1:构建一个长度为L的动态链表数组P,该数组中每个元素P[i]为一个链表的表
头节点,i=0,1,…,L-1,L表示每幅波形数据的采样点数量;

S2:按照预定参数实时采集第1幅波形数据,记其采样点序列为X1,X1[i]表示第1幅
波形的第i个采样点,令链表数组中每个链表的表头节点数据域P[i].data=X1[i],指针域
P[i].next=null;

S3:令波形序号t=2;

S4:按照预定参数实时采集第t幅波形,记其采样点序列为Xt,Xt[i]表示第t幅波形
的第i个采样点;

S5:分别判断每个链表当前的链表节点数量是否小于M,M表示预设的包络次数,如
果是,不作任何操作,否则删除该链表的表头节点;

S6:对波形中的每个采样点分别创建一个链表节点S[i],其数据域S[i].data=Xt
[i],指针域S[i].next=null;将链表节点S[i].data与数组元素P[i]对应链表中的所有节
点的数据域依次比较,若该链表中的所有节点的数据域都与S[i].data不同,则将S[i]直接
添加到该链表末尾;若有某一节点的数据域与S[i].data相同,则删除该节点后将S[i]添加
到该链表末尾;

S7:判断链表数组P中每个表头节点P[i]所对应的波形数据的序号ti与当前波形
数据序号t之间的差值是否大于预设阈值T,如果t-ti>T,则将该表头节点删除,将下一链
表节点作为表头节点;

S8:依次扫描每个链表,提取该链表所有节点数据域中数据的最大值Roof[i]和最
小值Floor[i],分别作为第i个采样点的上包络值和下包络值,得到信号的包络数据;

S10:判断是否接收到结束指令,如果是,结束信号采集和包络提取,否则令t=t+
1,返回步骤S4。

本发明基于链表数组的多幅波形包络提取方法,建立一个动态链表数组,数组长
度和一副信号波形长度相同,数组中的数据元素均为链表表头节点,每一个链表中存储同
一个采样位置的波形数据,每采集完一幅波形数据即更新数据链表;在每次更新数据时,如
果链表长度达到用户设置的包络次数,则删除表头节点;如果最新数据与之前某个节点相
同,则将这一旧节点删除,将最新数据添加至链表末尾节点,否则直接将最新数据添加至链
表末尾节点;然后对链表进行数据老化处理,避免老旧数据滞留;依次扫描每个链表得到其
最大值和最小值,即为对应采样点的包络数据。

采用本发明,使用链表数组存储波形数据,然后从中提取包络数据,省去在硬件中
复杂的计算过程,同时解放大量存储空间,提高了数据处理的效率以及包络数据的精度。

附图说明

图1是本发明基于链表数组的多幅波形包络提取方法的具体实施方式流程图;

图2是本发明中所采用的链表数组结构图。

具体实施方式

下面结合附图对本发明的具体实施方式进行描述,以便本领域的技术人员更好地
理解本发明。需要特别提醒注意的是,在以下的描述中,当已知功能和设计的详细描述也许
会淡化本发明的主要内容时,这些描述在这里将被忽略。

实施例

为了更好地说明本发明的技术内容,首先对链表数组进行一个简要说明。链表数
组同时结合了链表和数组的优点,将同类型的元素按照一定顺序排列,用同一个名字命名
这些有限个类型相同的变量,然后用编号区分他们,并且可以用一组任意的存储单元来存
储数据元素,这组存储单元可以是连续的也可以是不连续的。这就意味着,这些数据元素可
以存储于内存未被占用的任意位置。链表的每一个节点包括两部分:存储数据元素的数据
域,以及存储下一个节点地址的指针域。通过每个节点的指针域将数据元素按其逻辑顺序
链接在一起。这些节点可以在运行时动态生成,避免数据长度变化较大时,难以确定存储空
间容量这一问题。

图1是本发明基于链表数组的多幅波形包络提取方法的具体实施方式流程图。如
图1所示,本发明基于链表数组的多幅波形包络提取方法的具体步骤包括:

S101:构建链表数组:

构建一个动态链表数组,用于存储采集到的波形数据。图2是本发明中所采用的链
表数组结构图。如图2所示,本发明中采用链表数组是长度为L的数组P,该数组中每个元素P
[i]为一个链表的表头节点,i=0,1,…,L-1,L表示每幅波形数据的采样点数量。表1是链表
节点结构。

data
next

表1

如表1所示,链表节点中的数据域data用于保存数据,在本发明中用于保存对应采
样点数据,指针域next用于指向下一个节点,若该节点是当前链表的最后一个节点,则next
域为null。本发明中,每个链表的最大长度为M,M表示预设的包络次数,即在求取信号的包
络时,所涵盖的波形数据的幅数。

S102:链表数组初始化:

按照预定参数,例如时基、幅度档位实时采集第1幅波形数据,记其采样点序列为
X1,X1[i]表示第1幅波形的第i个采样点,令链表数组中每个链表的表头节点数据域P[i]
.data=X1[i],指针域P[i].next=null。

S103:令波形序号t=2。

S104:信号数据采集:

按照预定参数实时采集第t幅波形,记其采样点序列为Xt,Xt[i]表示第t幅波形的
第i个采样点。

S105:链表长度维护:

分别判断每个链表当前的链表节点数量是否小于M,如果是,不作任何操作,否则
删除该链表的表头节点。该步骤的作用是保证每个链表的节点数量不超过其最大长度。

S106:链表节点维护:

对于第t幅波形中的每个采样点,依次创建并初始化一系列的链表节点,即对采样
点Xt[i]创建一个链表节点S[i],其数据域S[i].data=Xt[i],指针域S[i].next=null;将
链表节点S[i].data(新采样点)与数组元素P[i]对应链表中的所有节点的数据域(旧采样
点)依次比较,若该链表中的所有节点的数据域都与S[i].data不同,则将S[i]直接添加到
该链表末尾;若有某一节点的数据域与S[i].data大小相同,则删除该节点后将S[i]添加到
该链表末尾。

可见,采用以上方法进行链表节点维护后,每个链表下各个节点的数据域均为不
同的值,这样就不需要存储每幅波形的数据,从而减少数据存储量,并且也大大减少了后续
包络提取时的运算量。

S107:数据老化处理:

判断链表数组中每个表头节点P[i]所对应的波形数据的序号ti与当前波形数据
序号t之间的差值是否大于预设阈值T,如果t-ti>T,则将该表头节点删除,将下一链表节
点作为表头节点。该操作可以避免某个较老的数据滞留在链表中,影响包络提取的准确性。
由于包络次数为M,因此可以设置T=M,以保证链表中所存储的是最近M幅波形数据的相关
数据。

S108:包络提取:

依次扫描每个链表,提取该链表所有节点数据域中数据的最大值Roof[i]和最小
值Floor[i],分别作为第i个采样点的上包络值和下包络值,得到信号的包络数据。根据系
统参数进行实时刷新并显示,即可显示信号的包络波形。

S109:判断是否接收到结束指令,如果是,结束信号采集和包络提取,否则令t=t+
1,返回步骤S104。

尽管上面对本发明说明性的具体实施方式进行了描述,以便于本技术领域的技术
人员理解本发明,但应该清楚,本发明不限于具体实施方式的范围,对本技术领域的普通技
术人员来讲,只要各种变化在所附的权利要求限定和确定的本发明的精神和范围内,这些
变化是显而易见的,一切利用本发明构思的发明创造均在保护之列。

基于链表数组的多幅波形包络提取方法.pdf_第1页
第1页 / 共8页
基于链表数组的多幅波形包络提取方法.pdf_第2页
第2页 / 共8页
基于链表数组的多幅波形包络提取方法.pdf_第3页
第3页 / 共8页
点击查看更多>>
资源描述

《基于链表数组的多幅波形包络提取方法.pdf》由会员分享,可在线阅读,更多相关《基于链表数组的多幅波形包络提取方法.pdf(8页珍藏版)》请在专利查询网上搜索。

本发明公开了一种基于链表数组的多幅波形包络提取方法,建立一个动态链表数组,数组长度和一副信号波形长度相同,数组中的数据元素均为链表表头节点,每一个链表中存储同一个采样位置的波形数据,每采集完一幅波形数据即更新数据链表;在每次更新数据时,如果链表长度达到用户设置的包络次数,则删除表头节点;如果最新数据与之前某个节点相同,则将这一旧节点删除,将最新数据添加至链表末尾节点,否则直接将最新数据添加至链表末。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 测量;测试


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1