Page 40 - 《应用声学》2022年第1期
P. 40

36                                                                                   2022 年 1 月

                                                       T
               e k (n)=[e k (n), e k (n − 1), · · · , e k (n − P +1)] ,  差向量,加快收敛速度。可以表示为
                                                        (6)                          ∑ ∑
                                                                                         J
                                                                                      K
                                                                       ˆ
                                                                      E(n) = E(n) +        S j,k ∗ y j (n)
                                                       T
               y j (n)=[y j (n), y j (n − 1), · · · , y j (n − M +1)] ,
                                                                                     k=1 j=1
                                                        (7)                       T
                                                                              − U (n)W (n).              (16)
             其中,每个元素y j (n)可通过公式(2)获得。
                                                               即误差传声器拾取信号 E(n) 之后,不直接去更新
                 误差信号矩阵e k (n)可表示为
                                                                                                 ˆ
                                                               滤波器,而是用估计出来的误差信号 E(n) 做运算。
                                    J
                                   ∑
                   e k (n) = d k (n) +  S j,k ∗ y j (n)        这个操作消除了次级通路的时延对系统的影响,进
                                   j=1                         一步提升了收敛速度          [17] 。由于MFxAP算法对于误
                            J       [ I              ]
                           ∑         ∑                         差信号的重构会带来计算量的增加,为了减少运算
                                          T
                 = d k (n) +   S j,k ∗   x (n)w i,j (n)
                                          i                    量,前人研究了许多快速 MFxAP 算法               [14] ,其中容
                           j=1       i=1
                                                               易实现的 Fast FxAP 算法。它是在正则化因子 δ 很
                            I   J
                           ∑ ∑
                 = d k (n) +      v i,j,k w i,j (n),    (8)    小的时候,对于矩阵求逆进行近似。Fast FxAP 中
                           i=1 j=1
                                                               误差信号向量简单记为
             式(8)中,
                                                                           [               T       ] T
                                                                  e k,0 (n) ≈ e k,0 (n), (1 − µ)˜ e (n − 1)  ,  (17)
                                                                                           k
                                    T
                         v i,j,k (n) = x (n) ∗ S j,k .  (9)                        [
                                    i
                                                                          T
                                                               式(17)中, ˜ e (n − 1)= e k,0 (n − 1), e k,1 (n − 1), · · · ,
                                                                          k
                                                         T
             令 u k (n) = [v T  (n), v T  (n), · · · , v T  (n)] ,          ] T
                           1,1,k    1,2,k        I,J,k         e k,L−2 (n − 1)  为n − 1时刻误差向量e k (n − 1)的
                               T
                                                 T
                       T
             W (n) =[w 1,1 (n), w 1,2 (n), · · · , w T  (n)] ,公式 (8)  前 L − 1 个元素,用它来拼凑新的矩阵 E(n),得到
                                           I,J
                                                                                                   ˆ
             可改写为
                                                                ˆ
                                                               E(n) 的一个简化估计。可以理解为,这是对于普通
                              T
              e k (n)=d k (n) + u (n)W (n), k=1, 2 · · · K. (10)
                              k                                的FxAP算法旧的误差向量进行了“遗忘”。
                 为了简便表示,令                                          算法收敛时间跟滤波 -x 信号相关矩阵的特征
                                                  T
                                             T
                            T
                                   T
                   D(n) = [d (n), d (n), · · · , d (n)] ,      值散度有关      [2] ,特征值散度越大,收敛越慢。FxAP
                            1      2         K
                                                               算法可以加速收敛主要是因为对于滤波 -x 矩阵进
                            T
                                  T
                                                  T
                                             T
                   E(n) = [e (n), e (n), · · · , e (n)] ,
                            1     2          K                                            [14]
                                                               行求逆,它是一种预白化操作                 ,减少了特征值的
                   U(n) = [u 1 (n), u 2 (n), · · · , u K (n)],
                                                               散度,加快了收敛速度。
             式(10)可以进一步写为
                                                               2.3  计算复杂度分析
                                       T
                      E(n) = D(n) + U (n)W (n).        (11)
                                                                   本 节 考 虑 硬 件 实 现 复 杂 度 的 问 题, 对
             进而目标函数记为                                          FxNLMS、FxAP、MFxAP、Fast FxAP 算法的运
                  
                                              2
                   min ||W (n + 1) − W (n)|| ,                算量进行分析。
                   W (n+1)                             (12)        上述算法实现的时候,需要计算的变量分别是
                                T
                   s.t. D(n) = U (n)W (n + 1).                                      −1
                                                               y j (n)、E(n)、U(n)、R    (n)、W (n + 1),其中 4 种
             使用拉格朗日乘子法,可求得 FxAP 算法的更新                          算法都需要计算 y j (n)、U(n)、W (n + 1) 三个变量,
             公式为                                               需要 J × IL + IJK × M + IJK × KP 次乘法和
                  W (n + 1) = W (n) + µU(n) · ε(n).    (13)    J × I(L − 1) + IJK × (M − 1) + IJK × KP 次加
                                                               法,把他们分别记为 C × 和 C + 。总结 4 种算法复杂
             式(13)中,
                                                               度如表1所示。
                       ε(n) = [R(n) + δI] −1 e(n),     (14)
                                                                   相比于 FxNLMS 算法,FxAP 算法计算量主要
                                 T
                       R(n) = U (n)U(n),               (15)    增加在矩阵求逆过程中;MFxAP 算法的还需要计
             其中,δ 是一小量,用来防止矩阵求逆时出现不稳定                          算虚拟误差信号矩阵,这个步骤的计算量非常大,
             情况。                                               Fast FxAP算法是对求解虚拟误差信号矩阵这个过
                 同样,FxAP 类算法也有很多改进形式,例如                        程的一个近似,只是增加了 (L − 1) × P 个乘法,这
             MFxAP(Modified FxAP) 算法      [14] ,它通过重构误          个计算量增加是可以接受的。
   35   36   37   38   39   40   41   42   43   44   45