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)
号传送给扬声器(初级噪声源)。