一种自适应滤波的系数更新方法转让专利

申请号 : CN201911095637.2

文献号 : CN110855269B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 文昊翔罗欢杨森泉洪远泉

申请人 : 韶关学院

摘要 :

本发明提供一种自适应滤波的系数更新方法:将滤波器的长度等分为M段;在k时刻,判断在所述滤波器分段内是否所有系数均为零值系数,若是,则该分段记为零值分段,否则记为活跃分段;获取输入信号,选取滤波器的全部活跃分段和选定的一部分零值分段参与迭代获得下一时刻滤波器系数;在k+1以及后续时刻,选取滤波器的全部活跃分段和未参加上一时刻迭代的k时刻零值分段参与迭代,直至所有零值分段均参与了一次迭代。而后重新一下一时刻为新的k时刻开始新一轮k时刻零值分段的选取迭代。相较现有技术,本发明提高了计算收敛速度、系统跟踪能力与降低计算复杂度。

权利要求 :

1.一种自适应滤波的系数更新方法,其特征在于,包括如下步骤:

步骤1:设滤波器w(k)中的系数总量为N,并将滤波器w(k)的长度等分为M段;其中M为大于1的整数,每段滤波器wi(k)包含L=N/M个系数,i∈[1,M];

步骤2:将所述滤波器分成的M段随机分为活跃分段与零值分段;

步骤3:获取输入信号χ(k);

步骤4:判断是否所有零值分段均参与了一次算法,若所有零值分段均参与了一次算法,跳至步骤8,否则继续步骤5;

步骤5:选取若干段新的、未曾参与过算法的零值分段;

步骤6:选取滤波器的全部活跃分段和步骤5选定的多段零值分段参与迭代计算,通过计算更新所述全部活跃分段和步骤5选定的多段零值分段的下一时刻的系数;对于未被选中的分段,系数保持不变;其中,进行系数迭代时采用的滤波器系数更新迭代方程为:T

e(k)=d(k)‑χ(k)U(k)w(k);

其中,U(k)=A(k)+Q(k),μ为收敛步长,0<μ<2;χ(k)为k时刻的输入信号;d(k)为系统输出理论值;e(k)为后验误差;

步骤7:返回步骤3;

步骤8:将滤波器分段重新区分为活跃分段与零值分段,其包含以下5个步骤:步骤8.1:在k时刻(k>0),利用上一时刻k‑1的零值分段计算零值系数的标准方差σ0(k‑

1)值;

步骤8.2:遍历滤波器所有系数,幅值大于3σ0(k‑1)的系数判断为活跃系数;反之则为零值系数;

步骤8.3:在k时刻(k>0),遍历滤波器所有分段,判断分段内是否所有系数均为零值系数,若是,则该分段记为k时刻零值分段,否则,将该分段记为k时刻活跃分段;

步骤8.4:通过预设零值分段参与算法频率p,计算每次迭代时需要选取的参与算法的零值分段的数量;

步骤8.5:继续执行步骤9;

步骤9:计算各滤波器分段的二次范数,并通过其判断滤波器是否为强稀疏性,若是,则跳回至步骤5;反之,若滤波器为弱稀疏性,则使用NLMS算法迭代更新滤波器系数,然后返回步骤3。

2.如权利要求1所述的自适应滤波的系数更新方法,其特征在于:在步骤8.1中,以前一时刻的零值分段计算所有零值系数的标准方差σ0 (k) 值,计算公式为

3.如权利要求2所述的自适应滤波的系数更新方法,其特征在于:在步骤8.3中,以向量z(k)=[z1(k),z2(k),z3(k)…]来保存每个k时刻零值分段的下标;以一个N×N阶对角矩阵A(k)=diag[a1(k)a2(k)…aM(k)]来表示k时刻活跃分段位置,若分段wi(k)被判断为活跃分段,相应的ai(k)设置为ai(k)=1L;若分段wi(k)被判断为零值分段,则相应的ai(k)设置为ai(k)=0L,其中,所述1L与0L分别代表长度为L的全1、全0向量。

4.如权利要求3所述的自适应滤波的系数更新方法,其特征在于:在步骤8.4中,确定每次参与迭代的零值分段的数量的方法为:设k时刻零值分段的总量为mz(k),零值分段更新频率为p,其中0

5.如权利要求4所述的自适应滤波的系数更新方法,其特征在于:在步骤5中,以一N×N阶对角矩阵Q(k)表示参与迭代的k时刻零值分段位置,其通过遍历向量z(k)获得k时刻零值分段的第1个至第mu(k)个下标,然后将Q(k)矩阵中对应位置设置为向量1L,其余位置保持为向量0L。

6.如权利要求5所述的自适应滤波的系数更新方法,其特征在于:在步骤9中,判断滤波器稀疏性的方法为:若滤波器的零值分段总量mz(k)小于M/2,判断滤波器为弱稀疏性。

7.如权利要求5所述的自适应滤波的系数更新方法,其特征在于:在步骤9中,判断滤波T器稀疏性的方法为:创建序列l(k)=[l1(k)l2(k)…lM(k)]以保存所有滤波器分段的l2值,其中,设lmax,z(k)为所有零值分段中l2值的最大值,即lmax,(k)=max{li(k),i∈z();lmax,a(k)是所有滤波器分段的l2值中的最大值,即lmax,a(k)=max{l1(k)l2(k)…lM(k)};

当lmax,z(k)>lmax,a(k)/2时,判断滤波器为弱稀疏性。

说明书 :

一种自适应滤波的系数更新方法

技术领域

[0001] 本发明涉及自适应系统辨识领域,具体涉及一种自适应滤波的系数更新方法。

背景技术

[0002] 自适应系统辨识是自适应理论的一个重要应用领域,在应用中,自适应的系统辨识方法通常以一个FIR(Finite Impulse Response)滤波器辨识目标系统的冲激响应序列(Impulse Response,IR),并以自适应算法更新滤波器系数以跟踪IR序列的变化。自适应系统辨识方法可应用于无线通信、雷达跟踪目标、回声消除与有源噪声控制等类型的目标系统,通过更新滤波器系数,实现对上述各类系统内噪声的最佳滤波。但现有的自适应系统辨识方法存在计算复杂度过高的问题。
[0003] 对于上述目标系统,由于时延的不确定性,导致了其IR序列中大部分系数为零值或极小值且其余小部分的系数具有较大幅值,其中,幅值较大的系数称作活跃系数。而在IR序列中,活跃系数在时域上聚集且活跃系数的数量只占总量很小一部分,这样的特征称作IR序列的稀疏性。在研究中,发明人发现,利用目标系统的稀疏性可以降低自适应系统辨识方法的计算复杂度,有效提高自适应算法的工作效率。
[0004] 其中,发明人在另一专利号为CN105654959A的专利中尝试利用稀疏性构建了一种自适应滤波的系数更新方法,其包括如下步骤:步骤1:将k时刻的滤波器W(k)的长度等分为M段;其中M为大于1的整数;步骤2:求取每段滤波器的系数的二次范数;步骤3:将一矩形窗在该M段滤波器上移动,对窗口内的各分段滤波器系数的二次范数进行累加以获得最大累加值;步骤4:以最大累加值所在窗口内的各滤波器分段作为滤波器活跃系数分段Wa(k),其余滤波器分段则为零值系数分段Wn‑a(k),将k时刻的输入信号X(k)等分成M段,且将输入信号亦对应地分为输入信号活跃系数分段Xa(k)和输入信号零值系数分段Xn‑a(k),并代入滤波器系数更新公式对滤波器系数进行更新;步骤5:根据滤波器系数更新方程对滤波器系数进行迭代更新,且每次迭代时更新滤波器的全部活跃系数分段Wa(k)并循环更新一段零值系数分段Wn‑a(k),以获得下一时刻k+1的滤波器系数。
[0005] 然而该方法每次只能选取一段零值分段参与滤波器的系数迭代计算,这导致滤波器的零值分段系数更新机会不足,损害了该方法的收敛速度与系统跟踪能力。

发明内容

[0006] 本发明提供一种自适应滤波的系数更新方法,包括如下步骤:
[0007] 步骤1:设滤波器w(k)中的系数总量为N,并将滤波器w(k)的长度等分为M段;其中M为大于1的整数,每段滤波器wi(k)包含L=N/M个系数,i∈[1,M];
[0008] 步骤2:将所述滤波器分成的M段随机分为活跃分段与零值分段;
[0009] 步骤3:获取输入信号χ(k);
[0010] 步骤4:判断是否所有零值分段均参与了一次算法,若所有零值分段均参与了一次算法,跳至步骤8,否则继续步骤5;
[0011] 步骤5:选取若干段新的、未曾参与过算法的零值分段;
[0012] 步骤6:选取滤波器的全部活跃分段和步骤5选定的多段零值分段参与迭代计算,通过计算更新所述全部活跃分段和步骤5选定的多段零值分段的下一时刻的系数;对于未被选中的分段,系数保持不变;其中,进行系数迭代时采用的滤波器系数更新迭代方程为:
[0013] e(k)=d(k)‑χT(k)U(k)w(k);
[0014]
[0015] 其中,U(k)=A(k)+Q(k),μ为收敛步长,0<μ<2;χ(k)为k时刻的输入信号;d(k)为系统输出理论值;e(k)为后验误差;
[0016] 步骤7:返回步骤3;
[0017] 步骤8:将滤波器分段重新区分为活跃分段与零值分段,其包含以下5个步骤:
[0018] 步骤8.1:在k时刻(k>0),利用上一时刻k‑1的零值分段计算零值系数的标准方差σ0(k‑1)值;
[0019] 步骤8.2:遍历滤波器所有系数,幅值大于3σ0(k‑1)的系数判断为活跃系数;反之则为零值系数;
[0020] 步骤8.3:在k时刻(k>0),遍历滤波器所有分段,判断分段内是否所有系数均为零值系数,若是,则该分段记为k时刻零值分段,否则,将该分段记为k时刻活跃分段;
[0021] 步骤8.4:通过预设零值分段参与算法频率p,计算每次迭代时需要选取的参与算法的零值分段的数量;
[0022] 步骤8.5:继续执行步骤9;
[0023] 步骤9:计算各滤波器分段的二次范数,并通过其判断滤波器是否为强稀疏性,若是,则跳回至步骤5;反之,若滤波器为弱稀疏性,则使用NLMS算法迭代更新滤波器系数,然后返回步骤3。
[0024] 相对于现有技术,本发明提供的自适应滤波的系数更新方法可以一次选取多段零值分段参与系数更新迭代,增加零值分段参与迭代的机会,提高了系统跟踪能力与计算的收敛速度。
[0025] 进一步,在步骤8.1中,以前一时刻的零值分段计算所有零值系数的标准方差σ0(k)值,计算公式为
[0026] 进一步,在步骤8.3中,以向量z(k)=[z1(k),z2(k),z3(k)…]来保存每个k时刻零值分段的下标;以一个N×N阶对角矩阵A(k)=diag[a1(k)a2(k)…aM(k)]来表示k时刻活跃分段位置,若分段wi(k)被判断为活跃分段,相应的ai(k)设置为ai(k)=1L;若分段wi(k)被判断为零值分段,则相应的ai(k)设置为ai(k)=0L,其中,所述1L与0L分别代表长度为L的全1、全0向量。
[0027] 进一步,在步骤8.4中,确定每次参与迭代的零值分段的数量的方法为:设k时刻零值分段的总量为mz(k),零值分段更新频率为p,其中0
[0028] 进一步,在步骤5中,以一N×N阶对角矩阵Q(k)表示参与迭代的k时刻零值分段位置,其通过遍历向量z(k)获得k时刻零值分段的第1个至第mu(k)个下标,然后将Q(k)矩阵中对应位置设置为向量1L,其余位置保持为向量0L。
[0029] 进一步,在步骤9中,判断滤波器稀疏性的方法为:若滤波器的零值分段总量mz(k)小于M/2,判断滤波器为弱稀疏性。
[0030] 进一步,在步骤9中,判断滤波器稀疏性的方法为:创建序列l(k)=[l1(k)l2(k)…TlM(k)]以保存所有滤波器分段的l2值,其中, 设lmax,z(k)为所有零值分段中l2值的最大值,即lmax,(k)=max{li(k),i∈z();lmax,a(k)是所有滤波器分段的l2值中的最大值,即lmax,a(k)=max{l1(k)l2(k)…lM(k)};当lmax,z(k)>lmax,a(k)/2时,判断滤波器为弱稀疏性。

附图说明

[0031] 图1是本发明自适应滤波的系数更新方法的总体流程图;
[0032] 图2是当μ=1,N=96时,NLMS与本实施例中自适应滤波的系数更新方法失调曲线对比图;图3是图μ=0.5,N=96时,NLMS与本实施例中自适应滤波的系数更新方法失调曲线对比图;图4是图μ=0.5时,NLMS与本实施例中自适应滤波的系数更新方法收敛所需的迭代次数对比图;
[0033] 图5是图μ=0.3时,NLMS与本实施例中自适应滤波的系数更新方法收敛所需的迭代次数对比图。

具体实施方式

[0034] 本发明旨在提供一种自适应滤波的系数更新方法,利用目标系统稀疏性,先将某时刻的滤波器系数分为活跃系数与零值系数,每次算法迭代选取全部活跃系数且仅选取一部分零值系数。当所有零值系数均参与一次迭代后,算法重新判断滤波器的活跃系数与零值系数,开始新一轮循环迭代。本方法利用了零值系数的缓慢时变性,通过减少参与算法的零值系数的实际数量提高算法性能。同时,发明人考虑到目标系统可能为弱稀疏系统的情况,设置了系统稀疏性判断流程,在出现弱稀疏系统时切换采用NLMS算法迭代滤波器的系数,增强算法的适应性。
[0035] 为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处描述的具体实施例仅用以解释本发明,并不用于限定本发明。
[0036] 请参照图1,图1为本实施例中的自适应滤波的系数更新方法的总体流程图。本方法在获取各时刻目标系统的输入信号χ(k)的同时,周期性地调整更新滤波器内的各个系数,使得使用本方法的滤波器能够跟踪目标系统的变化,有效滤波。具体方法如下:
[0037] 步骤1:设滤波器w(k)中的系数总量为N,并设k为滤波器开始工作后的第k个时刻,同时将滤波器w(k)的长度等分为M段,每段滤波器wi(k)包含L=N/M个系数;其中M为大于1的整数,i∈[1,M]。
[0038] 所述滤波器由有序排列的N个系数组成,各系数呈现不同的幅值特性,其中,幅值高的系数被认为是活跃的,反之则为看作是零值系数。本方法采用微分思想,将滤波器等分为若干段,分别分析在k时刻下各段滤波器的特性,并对活跃系数与零值系数采取不同的更新策略。
[0039] 步骤2:将所述滤波器分成的M段随机分为活跃分段与零值分段。
[0040] 当所述滤波器开始工作时,通过将各个分段随机分为活跃分段与零值分段完成算法的初始化。
[0041] 步骤3:获取最新的输入信号χ(k)。
[0042] 步骤4:判断是否所有零值分段均参与了一次算法,若所有零值分段均参与了一次算法,跳至步骤8,否则继续步骤5。
[0043] 基于滤波器的零值系数时变缓慢的特性,在k时刻完成判断k时刻零值分段与k时刻活跃分段后,至所有k时刻零值分段均参与了一次迭代前的各个时刻中,本方法将不断选取没参与过迭代的零值分段参与算法,直至完成所有零值分段内系数的更新。在此之前,本方法将不会再进行对活跃分段与零值分段的重新判断,而是沿用k时刻判断得出的k时刻零值分段与k时刻活跃分段以及零值系数的3σ0(k)值,以减小算法的计算量。
[0044] 步骤5:选取若干段新的、未曾参与过算法的零值分段;具体地,以一N×N阶对角矩阵Q(k)表示参与迭代的k时刻零值分段位置,其通过遍历向量z(k)获得k时刻零值分段的第1个至第mu(k)个下标,然后将Q(k)矩阵中对应位置设置为向量1L,其余位置保持为向量0L。
[0045] 步骤6:选取滤波器的全部活跃分段和步骤5选定的多段零值分段参与迭代计算,通过计算更新所述全部活跃分段和步骤5选定的多段零值分段的下一时刻的系数;对于未被选中的分段,系数保持不变。因此,参与迭代的滤波器分段由所有活跃分段与mu(k)个零值分段组成,因此在k时刻参与迭代的所有滤波器分段位置由对角矩阵U(k)=A(k)+Q(k)给出,参与算法的滤波器系数为U(k)w(k)。其中,进行系数迭代时采用的滤波器系数更新迭代方程为:
[0046] e(k)=d(k)‑χT(k)U(k)w(k);
[0047]
[0048] 其中,U(k)=A(k)+Q(k),μ为收敛步长,0<μ<2;χ(k)为k时刻的输入信号;d(k)为系统输出理论值;e(k)为后验误差。
[0049] 步骤7:返回步骤3;
[0050] 步骤8:将滤波器分段重新区分为活跃分段与零值分段,包含以下5个步骤:
[0051] 步骤8.1:在k时刻(k>0),利用上一时刻k‑1的零值分段计算零值系数的标准方差σ0(k‑1)值,具体方法为:用前一时刻的零值分段计算所有零值系数的标准方差σ0(k)值,计算公式为
[0052] 步骤8.2:遍历滤波器所有系数,幅值大于3σ0(k‑1)的系数判断为活跃系数;反之则为零值系数;
[0053] 步骤8.3:在k时刻(k>0),遍历滤波器所有分段,判断分段内是否所有系数均为零值系数,若是,则该分段记为k时刻零值分段,否则,将该分段记为k时刻活跃分段;其中,以向量z(k)=[z1(k),z2(k),z3(k)…]来保存每个k时刻零值分段的下标;以一个N×N阶对角矩阵A(k)=diag[a1(k)a2(k)…aM(k)]来表示k时刻活跃分段位置,若分段wi(k)被判断为活跃分段,相应的ai(k)设置为ai(k)=1L;若分段wi(k)被判断为零值分段,则相应的ai(k)设置为ai(k)=0L,其中,所述1L与0L分别代表长度为L的全1、全0向量。
[0054] 步骤8.4:通过预设零值分段参与算法频率p,计算每次迭代时需要选取的参与算法的零值分段的数量;确定每次参与迭代的零值分段的数量的方法为:设k时刻零值分段的总量为mz(k),零值分段更新频率为p,其中0
[0055] 步骤8.5:继续执行步骤9;
[0056] 步骤9:计算各滤波器分段的二次范数,并通过其判断滤波器是否为强稀疏性,若是,则跳回至步骤5;反之,若滤波器为弱稀疏性,则使用NLMS算法迭代更新滤波器系数,然后返回步骤3。其中,当以下两种情况之一出现时,判断系统为弱稀疏性:1)滤波器的零值分T段总量mz(k)小于M/2;2)创建序列l(k)=[l1(k)l2(k)…lM(k)]以保存所有滤波器分段的l2值,出现lmax,z(k)>lmax,a(k)/2的情况。其中, 设lmax,z(k)为所有零值分段中l2值的最大值,即lmax,(k)=max{li(k),i∈z();lmax,a(k)是所有滤波器分段的l2值中的最大值,即lmax,a(k)=max{l1(k)l2(k)…lM(k)}。
[0057] 为避免本方法的滤波器在辨识弱稀疏系统时性能下降,此处引入步骤9进行稀疏性判断,对于弱稀疏性的输入信号,切换采用NLMS算法更新滤波器的系数,以增强系统跟踪能力。其涉及如下原理:根据MDP,自适应算法的目标是在强制后验误差为零的条件下,使滤波器向量沿最小l2的方向更新系数。
[0058] 其数学表达式如下:
[0059] 优化变量:w(k+1);
[0060] 目标函数:
[0061] 约束条件:e(k)=d(k)‑wT(k+1)x(k)=0;
[0062] 通过求解上述条件约束最优优化问题,可得NLMS算法系数迭代公式如下:
[0063] e(k)=d(k)‑wT(k)x(k);
[0064]
[0065] 上式中符号 表示求取序列的l2值;μ为收敛步长,取值范围为0<μ<2。
[0066] 本实施例涉及原理如下:
[0067] 自适应系统辨识原理:对于在k时刻输入信号为χ(k)的目标系统,当我们想要通过滤波使得该系统输出为期望的波形,即系统理论输出值d(k)时,自适应系统辨识采取如下T的方法:首先求取d(k)与系统当前输出χ(k)U(k)w(k)的差值,记该差值为e(k);然后根据e(k)来调节下一时刻滤波器的系数,进一步使得下一时刻输入信号经过滤波器后的输出接近系统理论输出值,即e(k)趋近于0。
[0068] 同时,本实施例中,所述滤波器系数更新迭代方程利用了最小干扰原理MDP(minimum disturbance principle)进行优化。以下给出推导过程:
[0069] 由于本实施例中仅有被选中的分段参与自适应算法,未被选中的分段不参与算法,因此根据MDP,所述自适应滤波的系数更新方法的目标是:在选中系数的输出与期望信号相等的约束条件下,选中的滤波器系数应沿最小l2值的方向更新。最终针对本实施例的系数更新方法的条件约束最优化问题如下:
[0070] 优化变量:w(k+1);
[0071] 目标函数:
[0072] 约束条件:e(k)=d(k)‑χT(k)U(k)w(k+1)=0;
[0073] 所述目标函数的条件约束最优化问题可由拉格朗日乘数法求解。引入拉格朗日乘子λ,针对所述目标函数的拉格朗日函数J(k)为:
[0074] 将上式分别对w(k+1)、λ求导,分别使两式导数为零,而后将两式联立于等式两侧并引入收敛步长μ以平衡收敛速度与收敛精度,可得所述滤波器系数更新迭代方程为:
[0075]
[0076] A)本实施例的计算复杂度分析如下:
[0077] 本方法的计算复杂度主要包含以下3部分:1)定位活跃分段相关的计算复杂度;2)维护输入信号分段l2值所需要的计算复杂度与3)系数自适应更新相关的计算复杂度。
[0078] 以上3部分计算复杂度的总计算复杂度在下方列出,可见本方法的计算复杂度相对较低。表中 是参与算法的系数数量。
[0079] 表1‑本实施例的计算复杂度
[0080]
[0081]
[0082] 此外,稀疏性判断过程需要计算所有滤波器分段的l2值,由于零值分段的l2值在本实施例时已求得,因此只需额外求活跃分段的l2值。可见,本实施例的方法同样具有较低的计算复杂度。优选地,根据滤波器系数的缓时变性,可以每80~100次迭代判断一次IR序列的稀疏性。此时,判断稀疏性强弱所引入的计算复杂度基本可以被忽略。
[0083] B)收敛速度仿真实验:
[0084] 自适应算法的性能由算法失调评价,失调计算公式如下:
[0085]
[0086] 因为未被选取的滤波器分段不参与算法,所以在计算本实施例的计算方法的失调前,先将未被选取的系数设置为0,然后再按照上式计算失调值,即:
[0087]
[0088] 所有的失调曲线均使用蒙地卡罗算法求50次独立实验均值所得。所有算法的滤波器长度均与目标IR序列的长度相等。
[0089] 参数M、p对本实施例中算法的影响:
[0090] 输入信号x(k)为方差为1的高斯白噪声。另一列独立的高斯白噪声作为背景噪声加入系统,信噪比20dB。
[0091] 实验所用的IR序列记为h1,h1为一冲激函数序列,即序列中只有一个活跃系数幅值为1,其它系数幅值均为0。h1序列长度为96,活跃系数位置在(0,96)中按平均分布随机产生。为检验算法跟踪能力,将本实施例的滤波器与NLMS的滤波器初始化为h1(n‑48),其中h1(n‑i)表示序列h1向右循环移位i位。
[0092] NLMS与本实施例中算法(以SPU来表示)的失调曲线如图2所示。两种算法的收敛步长为μ=1。对本实施例中算法,当M=32时,p分别设置为p=1/2,p=1/4,p=1/8;mz=1代表每次仅选取1段零值分段进入算法,此种条件下,M参数取M=8。
[0093] 将NLMS与本实施例中算法(SPU)的收敛步长设置为μ=0.5,重复上述实验,得到失调曲线如图3所示。
[0094] 以下进一步分析比较参数M、p对本实施例中算法收敛性能的影响:设置μ=0.5,定义当算法失调达到‑18dB时可被判定为收敛,不同M、p参数设置下本实施例中算法(SPU)达到收敛状态所需要迭代次数如图4所示。图4中纵坐标为算法达到收敛状态所需迭代次数,横坐标为M取值。作为对比,NLMS算法收敛所需迭代次数亦在图4中列出,其值与M值无关。
[0095] 再将NLMS与本实施例中算法(SPU)的收敛步长设置为μ=0.3,当失调达到‑20dB时认为算法收敛,重复上述实验,得到实验结果如图5所示。
[0096] 由图2‑5可得,无论M、p参数取何值,本实施例中算法的收敛速度均显著优于NLMS。
[0097] 本实施例中,对活跃系数与零值系数采用不同的自适应策略:当某时刻完成对所述滤波器分段的幅值特性判断后,所有活跃系数均参与每一时刻的迭代,且每一时刻的迭代仅有一部分零值系数被循环选取参与迭代。由于稀疏系统的输出主要由活跃系数产生,因此本方法通过令所有活跃系数均参与迭代保证了辨识活跃系数的精确度;而零值系数对稀疏系统输出的贡献基本可以忽略,无需精确辨识,只需获得一定的参与算法的机会,本实施例通过引入参数p(零值分段更新频率),能够一次选取多段零值分段参与算法,增加零值分段参与算法的机会,提高算法的收敛速度与跟踪能力。此外,本实施例的算法对IR序列的回波数量无限制,且无需任何先验知识,具有更好的自适应能力。
[0098] 综上,相对于现有技术,本实施例中的自适应滤波的系数更新方法能够灵活选取多段零值分段参与迭代,且大幅降低了计算的系数数量,在保证本方法的系统跟踪能力的前提下,提高了收敛速度。
[0099] 进一步地,所述自适应滤波的系数更新方法每间隔一段时间进行一次稀疏性判断,并据此切换滤波器的系数迭代更新方法。相比于现有技术,本实施例中的方法不仅具有更好的系统跟踪能力与更低的计算复杂度,还进一步通过切换算法增强了辨识弱稀疏系统的能力。
[0100] 以上所述实施例仅表达了本发明的一种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。