蒋家昊, 蒋晨雨, 崔怀峰, 李之同
(宁波工程学院 机械工程学院, 浙江 宁波 315211)
车内噪声对驾乘人员的身体健康危害极大,如造成干扰交流,引起听觉系统的变化,影响非听觉系统,甚至可能引起人体病理性改变等。截止2020 年6 月,中国机动车保有量达3.6 亿辆,数量众多。因此如何减振降噪是当前的一大主要研究课题。 最初的研究者们是通过被动降噪的方法来解决,比如采用结构阻尼和声吸收的物理处理,但是会产生许多低频(0~500 Hz)噪声[1-2]。被动降噪技术只能在一定程度上降低车内噪声的危害,不能很好地满足当今人们对驾乘的舒适度和安全性要求。 人们开始在主动噪声控制技术领域进行探索。1933 年德国物理学家保罗·勒格初步提出关于主动噪声控制的基本思想;1991 年日产汽车首次在其生产的中型车上大规模安装独立的噪声主动控制系统来降低发动机轰鸣声[3]。国内对这方面的研究较晚,但是发展速度较快。 1979 年,沙家正等人开始了噪声有源控制技术的研究,并取得了良好的效果。 西北工业大学数据中心黎中伟等对螺旋桨飞行器舱内噪声主动控制问题进行了分析和实验验证,采用传统的FxLMS 算法[4]实现了对舱内噪声的多通道主动控制。此外,还有许多学者在这一领域做了大量工作[5-7]。
FxLMS 算法构建简单、整体性能较稳定,广泛应用于噪声控制研究中,但存在收敛速度和稳态误差无法达到统一的缺点。 因此,本研究首次将Sigmoid 函数和Softsign 函数应用于噪声控制领域,并将二者结合提出了分段函数变步长FxLMS 改进算法,从而改进FxLMS 算法的缺点。
图1 为FxLMS 反馈算法原理图,图中各符号的含义为:d(k)为初级噪声,P(z)为初级通道,S(z)为次级通道为次级通道估计,x(k)为估计的参考信号,y(k)为控制器发出的次级声波,ys(k)为次级源在传声器处产生的声压信号,即误差麦克风处的次级声波是估计的次级声波,e(k)为误差麦克风的输出误差,W(z)为自适应滤波器。 在仿真中和 W(z)均利用 FIR 滤波器进行建模。
图1 FxLMS 反馈算法原理图
在时刻k,自适应滤波器W(z)的输出y(k)为
其中,Wl(k)为L 阶自适应FIR 滤波器W(z)在k 时刻的系数。 次级声波ys(k)为
其中,sm为 M 阶 FIR 滤波器 S(z)的系数。 误差信号 e(k)为
滤波后的参考信号x′(k)在时刻k 定义为
滤波器W(z)在k 时刻的系数wl(k)通过FxLMS 算法更新为
其中,μ 为固定步长或收敛系数。 为了确保整个系统的稳定性,步长因子的取值范围表达式为
其中,L 为滤波器的阶数,Px是滤波参考信号 x′(k)的功率。
声信号使用噪声测试设备实车采集,如图2 所示,测试条件设定为发动机怠速3 000 r/min,车内空调关闭,滤波器W(z)阶数为16 阶,信号的长度取值为4 096*32,采样率设置为51 200。
图2 噪声测试设备及传感器布置:(a)测试设备; (b)发动机顶部加速度传感器; (c)发动机左侧加速度传感器; (d)副驾驶麦克风
Sigmoid 函数是一个常见的S 型函数。 在信息科学中,由于其单增以及反函数单增等性质,常被用作神经网络的阈值函数。 本研究首次尝试将其使用于降噪领域,通过Sigmoid 函数来改变FxLMS 算法中的定步长[3],由此得到基于Sigmoid 函数变步长的FxLMS 改进算法(以下简称:Sigmoid 函数改进算法)。 Sigmoid 函数变步长 μ(k)如下:
其中,e(k)为误差麦克风处的误差信号,α 和β 为常量。
图3 为基于Sigmoid 函数的步长因子图形。 图3(a)为当β=1 时,不同α 值对函数图形的影响,图3(b)为当α=1 时,不同β 值对函数图形的影响。 分析可知,β 值主要影响的是函数的值域,α 值主要影响的是函数的变化率。
图3 Sigmoid 函数中e(k)和μ 之间的关系曲线:(a)β=1 时, α 对函数曲线影响; (b)α=1 时, β 对函数曲线影响
在对Sigmoid 函数改进算法仿真之前,先使用传统的FxLMS 算法对采集的发动机噪声进行仿真控制。当步长取0.06 时,系统的控制性能达到最优,仿真结果如图4 所示。图4(a)为FxLMS 算法控制后的噪声,图4(b)是初级噪声和次级声波。 控制后系统在采样点数为7×104(即瞬态响应时间为1.367秒)时开始进入稳定状态,稳态误差为0.005。
图4 基于传统的FxLMS 算法控制的发动机怠速噪声:(a)FxLMS 算法控制后的噪声; (b)初级噪声与次级声波
再利用Sigmoid 函数改进算法对相同的噪声源即发动机噪声进行控制,仿真结果如图5 所示,其中相关参数设置为:α=1.6,β=30。 图5(a)为Sigmoid 函数改进算法控制后的噪声,图5(b)是初级噪声和次级声波。 从图5(a)可以看到采用Sigmoid 函数改进算法对发动机噪声控制后,系统在采样点数为7×104(即瞬态响应时间为1.367 秒)时开始进入稳定状态,稳态误差为0.006。
图5 基于Sigmoid 函数改进算法控制的发动机怠速噪声: (a)Sigmoid 函数改进算法控制后的噪声;(b)初级噪声与次级声波; (c)采样点数与μ 值变化曲线图
图5(c)为Sigmoid 函数变步长μ 值随采样点数的变化图形。由图5(c)可知,变步长μ 值在初始阶段基本随着采样点数的增加而降低,当采样点数达到4×104(即变步长μ 值的非稳定阶段时间为0.781 秒)时,μ 值变化趋于稳定,其值在0.07 上下波动。
应用Sigmoid 函数调整步长的方式基本上符合自适应滤波算法的步长调整原则[8]:在初始收敛阶段或未知系统参数发生变化时,步长应比较大,以便有较快的收敛速度和对时变系统的跟踪速度;而在算法收敛后,不管主输入端干扰信号有多大,都应保持很小的调整步长以达到很小的稳态失调噪声。 因此该算法能够协调收敛速度和稳态误差之间的关系, 使系统具有较快的响应能力和较小的稳态误差。但是Sigmoid 函数在误差接近0 时其变化率(导数的下降速度)过大(图3),从而使得系统稳定性下降。
Softsign 函数是一种应用于神经网络的非饱和激活函数,本研究提出的将该函数应用于主动降噪领域。 Softsign函数为
图6 为基于Softsign 函数的步长因子。 它是以0 为中心的对称曲线,曲线形状与tanh 函数类似,其本质是tanh 函数的一种平滑变体。 通过与Sigmoid 函数(图3)对比可以明显发现,Softsign 函数较之更为平滑且变化率更小,符合自适应滤波算法的步长调整原则。 该算法能更好地协调收敛速度和稳态误差之间的关系,取得较快的跟踪速率。 图6(a)为当β=1 时,不同α 值对函数曲线的影响,图6(b)为当α=1 时,不同β 值对函数曲线的影响。 分析可知,β 值主要影响的是函数的值域,α 值主要影响的是函数的变化率和函数的值域。
图6 Softsign 函数中e(k)和μ 之间的关系曲线:(a)β=1 时, α 对函数曲线影响; (b)α=1 时, β 对函数曲线影响
采用Softsign 函数变步长的FxLMS 改进算法(以下简称:Softsign 函数改进算法)对发动机噪声进行控制,仿真结果如图7 所示,其中相关参数取值为:α=50,β=15。 图7(a)为Softsign 函数改进算法控制后的噪声,图7(b)是初级噪声和次级声波。 由图7(a)可知Softsign 函数改进算法控制后,系统在采样点数为6×104时开始进入稳定状态,稳态误差为0.003。与Sigmoid 函数改进算法相比,该算法取得了更好的稳态性能,但收敛速度相对较慢。
图7 基于Softsign 函数改进算法控制的发动机怠速噪声: (a)Softsign 函数改进算法控制后噪声;(b)初级噪声与次级声波; (c)采样点数与μ 值变化曲线图
图7(c)为Softsign 函数变步长μ 随采样点数的变化图形。与Sigmoid 函数相比(图5),Softsign 函数变步长μ 值变化幅度小,导致收敛速度较慢,但是在收敛后由于其较小的μ 值使得系统更加稳定,稳态误差更小。 当采样点数达到6×104(即变步长μ 值的非稳定阶段时间为1.172s)时,变步长μ 值变化趋于稳定,其值在0.06 上下波动,较Sigmoid 函数波动幅度更小。
基于Softsign 函数具有较好的稳态性能但收敛速度较慢和Sigmoid 函数具有较快的收敛速度但稳态性能较差的特点,将两个函数组合成一个分段函数,以形成优势互补和弥补各自的缺陷。 分段函数定义为
其中,γ 为分段函数中两种函数切换的阈值。
通过仿真实验可知,Sigmoid 函数由于其曲率相对较大,所以当误差较大时能够更快收敛,但在较小误差时会降低系统的稳态性能。 Softsign 函数曲率相对较小,当误差较大时导致系统收敛速度较慢,但在较小误差时会提高系统的稳态性能。由此考虑在不同的误差时采用不同的函数变步长(公式(10)),以期实现更好的控制性能。 分段函数的阈值γ 根据控制初始阶段采用的Sigmoid 函数的收敛情况来确定,以防止当阈值γ 取过大时会导致无法平稳过渡,而过小时无法发挥分段函数的优势。
采用基于分段函数变步长的FxLMS 改进算法(以下简称分段函数改进算法)对发动机噪声进行控制,仿真结果如图8 所示。 分段函数改进算法中参数设置与单一函数改进算法中的参数设置相同。 另外,阈值γ=0.005。 图8(a)为分段函数改进算法控制后的噪声,图8(b)是初级噪声和次级声波。 由图8(a)可知,采用分段函数控制系统在采样点数为3×104时就开始进入了稳定状态,控制后的误差信号幅值为0.003。 和单一函数改进算法相比,提高了收敛速度,同时保持了较好的稳态性能。
图8 基于分段函数改进算法控制的发动机怠速噪声: (a)分段函数改进算法控制后噪声;(b)初级噪声与次级声波; (c)采样点数与μ 值变化曲线图
图8(c)为分段函数变步长μ 随采样点数的变化图形。由图可见,当采样点数达到3×104(即变步长μ值的非稳定阶段时间为0.586 秒)时,步长μ 变化趋于稳定,在0.06 上下波动,基本与Softsign 函数波动类似。 通过综合图8(c)、图7(c)和图5(c)发现,分段函数改进算法中变步长μ 值一直在Sigmoid 函数和Softsign 函数之间切换,从而实现了两种函数改进算法的优势互补,系统取得更快收敛速度和更高稳定性。
表1 为传统FxLMS 算法与各种函数变步长改进算法在系统响应时间和稳态精度方面的比较。由表1 可知,分段函数改进算法的收敛时间最短,稳态误差和Softsign 函数改进算法一样同为最小。 因此,分段函数改进算法比传统FxLMS 算法和单一函数改进算法取得了更好的综合控制性能。
表1 传统FxLMS 算法与各种改进算法的性能比较
以FxLMS 算法为基础,结合Softsign 函数的高稳态性能和Sigmoid 函数的快速反应的优点,创新性地开发出分段函数变步长FxLMS 改进算法。 仿真结果表明:
(1)提出的基于Softsign 函数的改进算法可有效提高控制系统的稳定性;
(2)分段函数变步长FxLMS 改进算法,实现了在控制系统的稳态误差为0.003 的高稳态性能,同时具有收敛速度为0.586 秒的快速响应,实现了对车内噪声的有效控制。