本发明属于无线通信系统的信号检测领域,涉及一种计算复杂度低,不需任何先验知识的数字信号存在性检测方法,该方法可以作为非合作通信的帧同步方法,用于解决未知发送方帧结构情况下的接收端信号粗同步问题,代替帧同步,进行信息的粗提取,也可用于解决多路信号同步前估计信号段位置,缩小相关积分区域,降低复杂度,节省开销等问题。
背景技术:
短波信道传输中由于多径效应和多普勒频移影响,信号衰落非常明显,分集合并技术对抗衰落具有明显优势。在对多路信号合并前,要先对多路信号做同步,只有最大可能使有用信号对齐,才能达到较为显著的合并效果。因此从衰落的单路信号中找出有用信号的大致位置显得尤为重要。传统的数字信号检测方法一般采用能量检测,文献perttihenttu,samiaromaa.consecutivemeanexcisionalgorithm[c]中提出了一种cme的干扰检测方法,该方法采用迭代的思想,多次迭代估计出信噪比,以分离噪声和干扰信号。该算法的缺陷在于多次迭代复杂度高,收敛性不确定,门限参数的设定基于经验,鲁棒性不够好。端点检测是语音信号处理中极为重要的方法,用于确定话音的起止位置,发展比较成熟。语音信号的端点检测方法利用了话音的特点比如清辅音短时能量,短时过零率以及信号谱熵的差别具体设计方法进行无信号的静默段与有话音段的区分,在图书《matlab在语音信号分析与合成中的应用》第六章讲述了几种对语音信号的端点检测方法,特别的基于能熵比的检测方法对衰落信道下的信号的检测效果比较好,基于能熵比的语音信号端点检测主要思路是对信号分帧,加窗,计算各个帧的能量和谱熵值,求能量和谱熵值的比作为一帧数据的度量,然后设定门限,与各帧的能熵比对比,确定出话音信号的起止帧。此方案的缺点在于取一帧内全部数据的幅值平方和作为能熵比中的能量,不免也包含了噪声的能量,故而在信噪比较低时带来的误差较大。门限设定使用双门限,双门限对语音信号检测有帮助,但对于数字信号也要具体分析。由于话音信号的时变性,只能假设短时(约30ms)不变来进行短时分析,但对于数字信号,短时的要求可以放宽,即分帧时可以根据具体情况选择不同帧长。
技术实现要素:
本发明的信号检测思路来源于语音信号的端点检测方法,语音信号也可看作一种数字信号,采用语音信号中的基于能熵比的端点检测的方法在数字信号的存在性检测中也适用,并且在已知调制信号的调制频点的情况下可以只取调制频点附近的谱线能量作为所求能熵比中的能量,提高了精确度。由于数字信号与语音信号性能评价方式不同,对于语音信号的检测,在信号段的首尾能够允许有少许的噪声,但对于数字信号首尾的噪声段长度不允许超过1个符号长度,否则会引起误码。本发明在进行数字信号端点检测时采用两次信号存在性检测,第一次可以选稍大一点的帧长进行检测确定信号的大致位置,保证不丢失信号,第二次在第一次提取出的信号的基础上再进一步减小帧长,并结合合并算法进一步精确起止位置。对于数字信号的端点检测,门限的设定可以采用双门限也可以采用单门限(将双门限的两个门限设为一样即是单门限),第一次的粗信号检测采用双门限较好,避免信号的丢失;对于第二次的精细检测时单门限效果要优于双门限,能尽可能的去掉首尾的噪声。仿真表明该方法也有比较好的检测效果,且复杂度低,对数字信号的位置检测较为准确。
本发明的技术方案如下:
对接收信号进行分帧,为使帧与帧之间有平滑过渡,设置半个帧长的重叠段;对分帧后的数据在每一帧内做快速傅里叶变换(fft),得到每一帧的幅度谱,依据幅度谱求得每一帧数据的能量以及谱熵值,能量与谱熵值之比即为能熵比;能熵比作为一帧数据判定为噪声还是数字信号的依据;本发明采用双门限判定,使信号存在性的判决更为准确,同时双门限也更利于找出信号的起止位置,减小起止位置判定的误差;总体来说,从一段含噪声且存在不连续信号段的数据中找数字信号段起止位置的方法就是遍历所有的帧,通过比较每一帧数据的能熵比与门限的值,找出一段数字信号的起始帧和结束帧,然后继续下一信号段的搜索;最终记录下该段数据中的每一数字信号段的起止位置;
本发明是一种基于信号能熵比的数字信号存在性检测方法,包括以下步骤:
步骤1、对接收信号r(t)以采样频率fs采样后得r(n),设r(n)的数据长度为n,对r(n)分帧;具体分帧方法及参数设定如下:取t秒的数据为一帧,即帧长wlen=t×fs;帧与帧间的重叠率设为n%,即帧移(下一帧相对于当前帧的移动采样点数)为inc=wlen-wlen×n%;n长的数据总的分帧数为
步骤2、对各帧数据做快速傅里叶变换(fft),取模值得能量谱:
yi(k),i=1,2,...,fn;k=1,2,...,wlen;
步骤3、计算各帧数据的能量,时域上能量计算方法为:eli=log10(1+ampi/a),i=1,2,...,fn,其中
步骤4、计算各帧数据的谱熵值:一帧数据内的每个频率分量的归一化谱概率密度函数为:
步骤5、计算各帧数据的能熵比:
步骤6、设定双门限:门限的设定与各帧的能熵比有关,由能熵比经过运算得来;具体如下:求所有帧的能熵比的最大值me以及初始均值eth,其中eth是前nis帧的能熵比的均值,nis是一个常数,表示信号段开始前噪声帧的长度;设定门限th1为噪声段门限:th1=α1×(me-eth)+eth,设定门限th2为信号段门限:th2=α2×(me-eth)+eth,α1,α2为常数且α1<α2;
步骤7、设置最大允许的噪声帧长度maxsilence和最小的信号帧长度minlen,开始信号段的端点检测;
步骤8:信号段的端点检测;
步骤8.1、初始化:信号帧计数count=0,状态标志case=0,噪声帧计数silence=0;
步骤8.2、读入一帧数据的能熵比;
步骤8.3、若case=0或1,比较该能熵比与信号门限th2的大小;若大于th2,表示检测到信号,count增1,记录当前帧数作为信号起始帧位置,case置为2,转步骤8.2;否则转步骤8.4;
步骤8.4、比较能熵比与噪声门限th1的大小,若大于th1,表示可能存在信号,count增1,case置为1,转步骤8.2;否则转步骤8.5;
步骤8.5、未检测到信号,转步骤8.1,否则转步骤8.6;
步骤8.6、若case=2,比较能熵比与噪声门限th1的大小,大于th1,表示本帧数据依旧在信号段,count增1,case不变,转步骤8.2;否则转步骤8.7;
步骤8.7、存在噪声,silence増1(可能因为信号衰落,造成信号段能熵比较低);判断silence是否达到最大允许噪声帧数,若未达到最大允许噪声帧数,则当前帧继续当作信号段的一部分,count增1,case不变,转步骤8.2;否则判断信号帧计数count是否大于最小信号段帧数,若小于最小信号段帧数则检测到的信号段帧数太短,认为无信号,转步骤8.1;否则转步骤8.8;
步骤8.8、信号段判断结束,记录结束帧的位置,信号段标志加1,准备检测下一信号段,转步骤8.1。
本发明有益的效果为:本发明是一种基于信号能熵比的数字信号存在性检测方法。由于背景技术所提出的cme迭代算法需要多次迭代才能收敛,这将带来极高的计算复杂度。因此,本发明提出使用能熵比作为信号存在性的度量指标,通过设定门限,比较能熵比与门限的大小,无须迭代,一次比较即可判断一帧内有无信号,简化计算的复杂度,在较高信噪比下,信号存在性检测准确率较高。
附图说明
图1为数据处理总的流程;
图2为本发明信号段双门限端点检测流程图;
图3为本发明信号段单门限端点检测流程图;
图4为对一段含噪数据的信号段仿真检测效果图;
具体实施方式
下面结合附图和实施例,详述本发明的技术方案。但不应将此理解为本发明上述主体的范围仅限于以下实施例,凡基于本发明内容所实现的技术均属于本发明的范围。
根据程序,初始化设置以下参数:
采样频率fs=9600hz,已知信号频点在f1=800hz和f2=1400hz,一帧数据长度为30ms,即帧长wlen为288个采样点,帧与帧重叠率设为50%,帧移inc为144个采样点,门限设置参数α1,α2分别为0.05和0.15,最大噪声段长度maxsilence设为5帧,最小信号段帧长minlen设为5帧。
如附图1所示,针对接收到的数字序列r(n),n=1,2...,n,信号存在性检测步骤如下:
步骤1、对r(n)分帧。具体分帧方法及参数设定如下:取30ms的数据为一帧,即帧长为288个采样点。帧与帧间的重叠率设为50%,即帧移(下一帧相对于当前帧的移动采样点数)为144个采样点。n长的数据总的分帧数为
步骤2、对每各帧数据做fft,取模值得能量谱yi(k),i=1,2,...,fn;k=1,2,...,288;
步骤3、计算各帧数据的能量:此处因为已知调制频点,故从频域求能量:
步骤4、计算各帧数据的谱熵值:每个频率分量的归一化谱概率密度函数定义为:
步骤5、计算各帧数据的能熵比:
步骤6、设定双门限:求所有帧的能熵比的最大值me以及初始均值eth,其中eth是前15帧的能熵比的均值,认为信号段开始前有至少有15帧的噪声。设定门限th1为噪声段门限:th1=0.05×(me-eth)+eth,设定门限th2为信号段门限:th2=0.15×(me-eth)+eth;
步骤7、设置最大允许的噪声帧长度maxsilence和最小的信号帧长度minlen,开始信号段的端点检测;
如附图2所示,信号段的端点检测算法步骤如下:
步骤1、初始化:信号帧计数count=0,状态标志case=0,噪声帧计数silence=0;
步骤2、读入一帧数据的能熵比eer;
步骤3、若case=0或1,比较该能熵比与信号门限th2的大小。若大于th2,表示检测到信号,count增1,记录当前帧数作为信号起始帧位置,case置为2,转步骤2。否则转步骤4;
步骤4、比较能熵比eer与噪声门限th1的大小,大于th1,表示可能存在信号,count增1,case置为1,转步骤2。否则转步骤5;
步骤5、未检测到信号,转步骤1;
步骤6、若case=2,比较能熵比eer与噪声门限th1的大小,大于th1,表示本帧数据依旧在信号段,count增1,case不变,转步骤2。否则转步骤7;
步骤7、存在噪声,silence増1(可能因为信号衰落,造成信号段能熵比较低);判断silence是否达到最大允许噪声帧数,若未达到最大允许噪声帧数,则当前帧继续当作信号段的一部分,count增1,case不变,转步骤2。否则判断信号帧计数count是否大于最小信号段帧数,若小于最小信号段帧数则检测到的信号段帧数太短,认为无信号,转步骤1。否则转步骤8;
步骤8、信号段判断结束,记录结束帧的位置,信号段标志加1,准备检测下一信号段,转步骤1。
利用matlab仿真软件对一段含噪的数据进行端点检测,在信噪比为15db检测效果如图2所示,两段划线之间为检测出的信号段,可见能准确找到信号段的位置。