Page 148 - 《应用声学》2020年第4期
P. 148

634                                                                                  2020 年 7 月


                 当|y(n + 1)| 6 C 时,                            1.3  计算复杂度
                                             ′
                 w(n + 1) = w(n + 1) + µe(n)x (n),      (9)        对于 “FxLMS”、“Leaky”、“Rescaling”、“DGD-
                                                               FxLMS”4 种自适应算法,表 2 对其计算量进行比
                  y(n + 1) = [x(n + 1), x(n), · · · ,
                                                               较。4 种算法计算复杂度比较主要包括 3 个部分:
                                        T
                            x(n − L + 2)] w(n + 1);    (10)                                              ˆ
                                                               (1) 计算次级信号 y(n);(2) 用估计的次级路径 S(z)
                 当|y(n + 1)| > C 时,                            对初级信号 x(n) 进行滤波;(3) 滤波器权矢量的迭
                                                               代更新    [14] 。从表 2 中可知,就加法、乘法和除法计
                 w(n + 1) = w(n + 1)[C/|y(n + 1)|],    (11)
                                                               算量而言,对于一个样本点,当控制器输出超过约
                 y(n + 1) = y(n + 1)[C/|y(n + 1)|].    (12)
                                                               束时,“DGD-FxLMS”算法比“FxLMS”算法少一次
             1.2 双梯度算法                                         次级路径滤波,即少 P 次乘法和 (P − 1) 次加法;当

                 本文 提出 的 双梯 度 FxLMS(Double-gradient            控制器输出不超过约束时,“DGD-FxLMS” 算法与
             FxLMS, DGD-FxLMS) 算法是通过直接约束次级                     “FxLMS” 算法计算量相同。虽然 “DGD-FxLMS”
             信号来改善水床效应的噪声放大问题,当次级信号                            算法还需要一些额外的选择开关以及一个阈值门
             超出约束时将次级信号的均方作为目标函数,最小                            阀,可以通过条件语句控制,而条件语句通常只
             化次级信号的能量。                                         需很少的机器周期,所以与传统的 “FxLMS” 算法
                 设定目标函数                                        相比,“DGD-FxLMS” 算法多余的计算复杂度可以
                                                              忽略不记。与 “Leaky” 算法相比,“DGD-FxLMS”
                              E[e (n)],  |y(n)| 6 C,
                                2
                     J(n) =                            (13)    算法少 L 或 (L + P) 次乘法,少 0 或 (P − 1) 次加
                              E[y (n)],  |y(n)| > C,
                                2
                                                               法。与 “Rescaling” 算法相比,“DGD-FxLMS” 算法
             其中,                                               少(L+1)或(L + P+1)次乘法,少0或(P − 1)次加
                                   T
                           y(n) = w (n)x(n).           (14)    法,少0或1次除法。因此,本文算法的计算量较小。
                                                                          表 2  4 种算法的主要计算量
                 按照最陡下降法递推滤波器的最佳权系数
                                                                  Table 2 Computation load of the four al-
                       w(n + 1) = w(n) − µ∇(n),        (15)       gorithms

             所以,滤波器权矢量迭代公式
                                                                    算法           乘法            加法        除法
                   w(n + 1)
                                                                  FxLMS        2L + P+1      2L + P − 2   0
                   
                     w(n) + µe(n)x (n), |y(n)| 6 C,
                                  ′
                =                                      (16)        Leaky       3L + P+1      2L + P − 2   0
                     w(n) − µy(n)x(n),   |y(n)| > C.
                   
                                                                  Rescaling    3L + P+2      2L + P − 2  0(1)
                 该算法沿着两个梯度方向搜索最佳权矢量,其                           DGD-FxLMS 2L+P +1 (2L + 1) 2L+P −2(2L−1) 0(0)
             主要流程如表1所示。
                                                                注:括号里表示当控制器输出超过约束时一个样本点的计算量。
                        表 1   DGD-FxLMS 算法
                                                               2 仿真验证
                Table 1 Pseudo code of DGD-FxLMS al-
                gorithm
                                                               2.1  实验设置
                             DGD-FxLMS 算法                          本文验证了4 种算法在有源降噪耳机中的实际
                  输入          x(n)                             效果。如图 2 所示,将市场上购买的有源降噪耳机
                  输出          w(n + 1)                         用作原型佩戴到B&K公司的人工头 (4182C)上,在
                                     T
                  步骤 1        y(n) = w (n)x(n)                 保持耳机整体结构不变的情况下拆分引出误差传
                  步骤 2        if |y(n)| 6 C                    感器、次级信号线,将误差麦克风通过传声器前放
                                                  ′
                              w(n + 1) = w(n) + µe(n)x (n)
                                                               连接到 B&K 公司的 Pulse 上,Pulse 一方面将误差
                                else
                                                               信号与次级信号输送到电脑,另一方面也将噪声信
                              w(n + 1) = w(n) − µy(n)x(n)
                                                               号传送给扬声器(初级噪声源)。
   143   144   145   146   147   148   149   150   151   152   153