发明内容
针对上述问题,本发明提出一种数字域正弦波检测方法及检测装置。
本发明的一种种数字域正弦波检测方法,如图1,包括:
S1、设置突发有效标志Flag_BurstValid为0、计数值Counter_Len为0,设定最小有效长度为Len_Validmin、最大测试序列长度为Len_Testmax;
S2、在正弦序列判决统计模块的A端输入第一输入序列An,B端输入第二输入序列Bn;
S3、利用第一输入序列An和第二输入序列Bn逐点计算相角θn;
S4、判断相邻两点的相角差是否满足|θn-1-θn|<εth,若不满足,令计数值 Counter_Len=0,判断Flag_BurstValid==1是否成立,若成立则转到步骤S5,若不成立则令Counter_Len=0并返回步骤S2;
若满足,则令Counter_Len+1,然后判断Counter_Len>Len_Validmin成立是否成立,若成立则令Flag_BurstValid=1,并返回步骤S2;若不成立,则是否 Counter_Len≥Len_Testmax,若是,跳至步骤S5,否则返回步骤S2;
S5、判断正弦波属于突发正弦波还是持续正弦波,并根据根据相角θn和计数值Counter_Len的值,计算出正弦波的频率,返回步骤S1;
其中,εth表示误差门限。
优选的,第一输入序列An和第二输入序列Bn的计算包括:
对于实正弦波序列,第一输入序列为An=X(n),第二输入序列为 Bn=X(n-Dm)+X(n+Dm);
对于复正弦波序列,第一输入序列为An=Xr(n)·Xr(n-Dm)+Xc(n)·Xc(n-Dm),第二输入序列为Bn=Xc(n)·Xr(n-Dm)-Xr(n)·Xc(n-Dm);
其中,X(n)表示实正弦波序列,Dm表示延迟单元的延迟参数,Xr(n)表示复正弦波序列的I路,Xc表示复正弦波序列的Q路。
本发明的一种数字域正弦波检测装置,包括:
数字域正弦波检测装置包括实正弦波序列输入模块、复正弦波序列输入模块和正弦序列判决统计模块,实正弦输入模块包括带通滤波器、延迟单元和加法器,复正弦输入模块包括带通滤波器、延迟单元、乘法器和加法器,正弦序列判决统计模块的输入端包括A端和B端,分别在A端输入第一输入序列An、B端输入第二输入序列Bn;
实正弦波序列输入模块用于计算实正弦波序列A端的第一输入序列An和B 端的第二输入序列Bn;
复正弦波序列输入模块用于计算复正弦波序列A端的第一输入序列An和B 端的第二输入序列Bn;
正弦序列判决统计模块用于判断相邻两点的相角θn的绝对差值与误差门限εth的关系,并计算出正弦波的频率。
本发明实现复杂度低,每一个点的运算量远低于FFT的运算量,前面采样点计算过的关于θn的结果可以重复使用;对畸变的敏感度高,正弦波序列的相位满足严格的数学关系,因此本发明能实时的检测出正弦波序列的畸变,并且本发明存储空间小,在高信噪比条件下相对于目前已有的方法,对正弦波的检测效率和准确性都更高。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。
本发明的一种数字域正弦波检测方法,如图1,包括:
S1、初始化,设置突发有效标志Flag_BurstValid为0、计数值Counter_Len 为0,设定最小有效长度为Len_Validmin、最大测试序列长度为Len_Testmax;
S2、在正弦序列判决统计模块的A端输入第一输入序列An,B端输入为第二输入序列Bn;
S3、利用第一输入序列An和第二输入序列Bn逐点计算相角θn;
S4、判断相邻两点的相角差是否满足|θn-1-θn|<εth,若不满足,令计数值 Counter_Len=0,判断Flag_BurstValid==1是否成立,若成立则转到步骤S5,若不成立则令Counter_Len=0并返回步骤S2;
若满足,则令Counter_Len自增1(Counter_Len++),然后判断 Counter_Len>Len_Validmin成立是否成立,若成立则令Flag_BurstValid=1,并返回步骤S2;若不成立,则是否Counter_Len≥Len_Testmax,若是,进入步骤S5,否则返回步骤S2;
S5、判断正弦波属于突发正弦波还是持续正弦波,并根据相角θn和计数值Counter_Len的值,计算出正弦波的频率,返回步骤S1;
其中,εth表示误差门限,最小有效长度Len_Validmin用于判断为正弦波序列的最小长度门限,优选的Len_Validmin=5;
最大测试序列长度Len_Testmax,对持续正弦波序列进行检测时的最大检测长度。
本发明的实正弦波序列检测模块如图2,包括带通滤波器、延迟单元和加法器,实正弦波序列经过带通滤波器后得到X(n+Dm),X(n+Dm)通过延迟单元得到X(n),将X(n)输入到正弦序列判决统计模块的A端;将X(n)通过延迟单元得到X(n-Dm),将X(n-Dm)与X(n+Dm)输入加法器所得到的结果输入到正弦序列判决统计模块的B端,Dm为延迟单元的延迟参数。
本发明的复正弦波序列检测模块如图3,复正弦波序列分为I、Q两路,复正弦波序列的I路经过带通滤波器后得到Xr(n),Xr(n)通过延迟单元得到 Xr(n-Dm),复正弦波序列的Q路经过带通滤波器后得到Xc(n),Xc(n)通过延迟单元得到Xc(n-Dm),将Xr(n)·Xr(n-Dm)+Xc(n)·Xc(n-Dm)的结果输入到正弦序列判决统计模块的A端,将Xc(n)·Xr(n-Dm)-Xr(n)·Xc(n-Dm)的结果输入到正弦序列判决统计模块的B端。
正弦序列判决统计模块进行逐点运算,首先需要初始化系统,令突发有效标志Flag_BurstValid、计数值Counter_Len为0,设定最小有效长度为 Len_Validmin、最大测试序列长度为Len_Testmax,其中最小有效长度和最大测试序列长度可以根据实际应用场景由用户设定。
在正弦序列判决统计模块的A端输入第一输入序列An,B端输入为第二输入序列Bn,对于实正弦波序列,第一输入序列为An=X(n),第二输入序列为 Bn=X(n-Dm)+X(n+Dm);
对于复正弦波序列,第一输入序列为An=Xr(n)·Xr(n-Dm)+Xc(n)·Xc(n-Dm),第二输入序列为Bn=Xc(n)·Xr(n-Dm)-Xr(n)·Xc(n-Dm)。
对于实正弦波序列,相角为θn=arccosBn2An,对反三角函数的计算可以采用级数展开的方法,这里采用泰勒级数的方法展开,令X=Bn2An,可以得到:
对于复正弦波序列,相角为θn=arctanBn/An对反三角函数的计算可以采用级数展开的方法,这里采用泰勒级数的方法展开,令X=Bn/An,可以得到:
当计算出相角θn后,需要判断相邻两点的相角差是否满足|θn-1-θn|<εth,若不满足,令计数值Counter_Len=0,判断Flag_BurstValid==1是否成立,若成立则转到步骤S5,若不成立则令Counter_Len=0并返回步骤S2;
若满足,则令Counter_Len+1,然后判断Counter_Len>Len_Validmin成立是否成立,若成立则令Flag_BurstValid=1,并返回步骤S2;若不成立,则是否Counter_Len≥Len_Testmax,若是,跳至步骤S5,否则返回步骤S2。
优选的,误差门限εth的计算为:
其中,ferr表示根据实际场景设置的最大检测频率误差,fs表示采样频率;在实际应用中εth需要计算位宽、定点运算及应用场景带来的计算误差进行修正。
优选的,判断正弦波属于突发正弦波还是持续正弦波时,需要判断是否 Counter_Len大于等于Len_Testmax,若大于等于,则认为该段正弦波是一段持续正弦波序列,计算出频率,频率的计算公式为:
若不大于等于,则认为该段正弦波是一段突发正弦波序列,其频率同样可以由上述频率计算公式得出,起点位置和持续长度由参数Counter_Len确定。
本发明实现复杂度低,每一个点的运算量远低于FFT的运算量,比如对于64点的FFT,需要128次复数乘法,256次复数加法,逐点滑动时,每滑动一次都需要做一次FFT,而用本发明的方法,逐点滑动时,每滑动一次只需要做一次需要1次复数乘法,1次除法,1次反三角函数计算,前面采样点计算过的关于θn的结果可以重复使用。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:ROM、RAM、磁盘或光盘等。
此外,术语“第一”、“第二”、“第三”、“第四”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量,由此,限定有“第一”、“第二”、“第三”、“第四”的特征可以明示或者隐含地包括至少一个该特征,不能理解为对本发明的限制。
所应理解的是,本发明一种数字域正弦波检测装置与数字域正弦波检测方法是同一构思的不同实现方式,系统实施例未描述部分可以参考方法实施例相应部分的描述,反之亦然。
以上所举实施例,对本发明的目的、技术方案和优点进行了进一步的详细说明,所应理解的是,以上所举实施例仅为本发明的优选实施方式而已,并不用以限制本发明,凡在本发明的精神和原则之内对本发明所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。