“所有的声音均是由一系列不同频率的声信号混合而成,如果可以人为地生成一种声音,其频率与所要消除的噪声完全一样,只是相位与之相反就可以将这噪声完全抵消掉。主动噪声控制(ANC) 就是在设备中加入了对噪声分析的电路,并通过控制器快速运算分析,产生可以抵消外界噪声的人为声信号,通过扬声器将相反相位的信号播放后抵消目标噪声。
”0 引言
所有的声音均是由一系列不同频率的声信号混合而成,如果可以人为地生成一种声音,其频率与所要消除的噪声完全一样,只是相位与之相反就可以将这噪声完全抵消掉。主动噪声控制(ANC) 就是在设备中加入了对噪声分析的电路,并通过控制器快速运算分析,产生可以抵消外界噪声的人为声信号,通过扬声器将相反相位的信号播放后抵消目标噪声。ANC 可用于多种应用,包括个人听力设备[1-2],管道和室内声学增强,发动机排气噪声抑制以及改善车辆外壳风噪,飞机舱和振动机器中的声学[3-4]。随着现代工业的飞速发展,大部分工业设备的功率越来越大,转速越来越快,噪声危害也日益突出。噪声不仅影响产品质量、操作精度、缩短产品寿命、危及安全性,且污染环境、影响人生健康。因此,掌握噪声控制技术是工业发展面临的重大课题。
在实际研究应用中,滤波x 最小均方算法(filteredx LMS, FxLMS)[5] 结构简单、算法稳定,所以FxLMS算法在ANC 控制器中使用最为广泛;还有改进而成的归一化LMS[6],其稳态误差可以降低到很小,但是收敛速度会受到很大影响;基于Sigmoid 函数的SVSLMS[7]算法也被广泛应用,其收敛速度较快但是稳态误差又达不到要求。此类变步长控制算法[8-11] 的主要问题在于算法中收敛步长多数是反馈误差信号的函数。经滤波器迭代计算后,该信号收敛不为零,会致使系统出现非零失调问题,则容易导致系统进入稳态后的误差仍然较大,且不再收敛。因此通过构建前馈信号的相关函数为参考的变步长主动噪声控制系统,来提高低频噪声降噪效果成为了可行的方向。
在自由场中,单通道主动噪声控制系统产生的“消音区”的直径约为控制声波波长的1/10[12],也就是说常规单通道主动控制系统的有效范围只有直径二三十厘米,这对于实际应用来说是远远不够的。因此大区域噪声主动控制需要使用多通道控制算法来实现[13-17],为此本文提出一种基于可变步长的多通道主动控制算法,并利用仿真实验验证其可行性。
1 控制算法
1.1 可变步长
当采用定收敛步长时,系统的收敛精度和收敛时间呈现出对立的情况,即收敛步长设置较小时,收敛精度更高,但是收敛时间却大大延长;反之,收敛步长设置较大时,收敛时间减小,但是收敛精度大为降低。因此,
为了消除定收敛步长FxLMS 的局限性,考虑采用可变收敛步长FxLMS 算法。
基于Sigmiod 函数的可变收敛步长算法(SVSLMS) 中
由式(1) 知,可变收敛步长μ(n) 是e(n) 的Sigmiod函数。初始收敛时,误差较大则收敛因子取值也较大;随着误差的逐渐变小,则收敛因子取值也随之变小。从而同时满足了自适应滤波的准则:较快的收敛速度、跟踪速度以及较小的稳态误差。但此式计算时较为繁琐,同时误差e(n) 在0 附近的稳定性不够理想,易引起非零失调。归一化LMS 算法中可变步长用参考输入信号的功率值进行归一化处理,从而得到与参考输入信号功率有关的可变收敛步长μ。可变收敛因子函数表示为:
由于x(n) 的欧式平方范数的硬件实现较为复杂,且参考输入信号只取当前瞬时值,x(n) 的欧式平方范数即等于x(n) 的绝对值平方,即改进为:
其中,|x(n)|2 是第n 次迭代中的瞬时参考输入信号的平方值。由式(1)、式(3) 可知,将可变收敛因子的计算中由原求解输入向量的自相关矩阵的运算,变换为标量的平方值运算,可提高收敛性,故令:
为改善非零失调的问题,将可变步长的输入信号改为系统参考信号的变化量,可得
1.2 多通道可变步长
MIMO 滤波-x LMS 算法是应用最为广泛的噪声控制算法,系统框图如图1 所示。设系统中有I 个参考传感器,J 个次级扬声器,K 个误差传感器。IJ 个自适应滤波器采用横向滤波器,其长度为L,滤波器权系数采用矢量形式统一表示为W(z)。Hp(z) 代表IK 个初级通路的传递函数,Hs(z) 代表JK 个次级通路的传递函数,Hs`(z) 是次级通路传递函数的估计值。初级通路和次级通路等效为FIR 滤波器,假设其长度分别为Lp 和Ls。
设xi(n) 为第i 个参考传感器在第n 时刻的输入信号,称为第i 个参考信号,即为xi(n)=[xi(n), xi(n-1),…,xi(n-L+1)]T;yj(n) 为第j 个控制器在第n 时刻的输出信号, 表示为y(n) = [y1(n), y2(n),…, yJ(n)]T;dk(n) 为第k 个误差传感器处第n 时刻的期望信号,表示为d(n) = [d1(n), d2(n),…, dK(n)]T;ek(n) 为该处第n 时刻的误差项信号表示为e(n) = [e1(n), e2(n),…, eK(n)]T。
则第j 个扬声器的输出信号即为sj(n) = yj(n)×Hs(n)。误差信号矢量可写成
式中:Hs(n) 为K×J 阶次级通路脉冲响应矩阵,第(k,j)元素为hskj(n);r(n) 为J×KLs 阶滤波 -x 信号矩阵,其(j,k) 元素为
设多通道自适应主动控制系统的目标函数为
与常用FxLMS 算法类似,利用最陡下降法原理,可以推导出控制器权系数迭代公式为
w(n +1) = w(n)−2μr(n)e(n) (10)
整个算法表达式总结如式(11)~(13) 所示
第k 个误差传感器接收到的信号为
第i 个参考传感器至第j 个控制器的权系数迭代公式
式中
其中μ 为收敛步长,可由式(5) 得到。则此算法命名为可变步长多通道滤波x 最小均方算法(VM-FxLMS)。
2 仿真实验
2.1 单通道算法性能
在MATLAB 中建立ANC 系统模型,信号模拟排风扇噪声。风扇噪声由旋转噪声和絮流噪声组成,旋转噪声用正弦信号代表,频率为500 Hz 左右,絮流噪声用白噪声代表,截至频率为4 kHz。在系统中加入低通滤波器,将高于4 kHz 的噪声滤除。
下面将分别使用FxLMS 算法、归一化NLMS 算法、SVSLMS 算法和本文提出的单VM-FxLMS 算法针对此模拟噪声进行测试对比。三种算法初始收敛步长μ 均设为0.01。仿真测试结果如图2 所示。
初始收敛状态时,从图2 a) 和b) 可看出,可变步长算法的收敛速度比定步长算法有着明显优势。本文提出的单VM-FxLMS 算法的收敛速度很快,且在其他算法趋于稳定时本算法还能够进一步收敛。在稳态阶段,从图2 c) 中可看出,单VM-FxLMS 算法稳态误差最低,且平稳无明显波动。从此仿真结果可看出,本文所提出的算法优于传统的定步长FxLMS 算法和一些其他的变步长算法。
2.2 多通道区域降噪实现
在MATLAB 中模拟4 m×4 m 大小的区域,在区域内设置多个噪声源,噪声成分同2.1 节所设噪声源且增加更多的干扰。初始收敛步长μ 均设为0.01,多通道ANC 系统设置为16 通道。在此区域降噪前和降噪后的噪声仿真图如图3 所示。
如图3 a) 所示,此区域中平均噪声约为50 dB,最高点噪声约为60 dB。降噪后的仿真图如图3 b) 所示,除个别点之外,整个区域的噪声有非常明显的降低,平均剩余噪声约为25 dB。降噪后相比于降噪前,噪声降低了约25 dB,个别区域是有噪声升高的现象。此仿真实验表明,本文提出的多通道ANC 系统对区域降噪具有非常好的控制些效果。
3 结语
本文提出的基于可变步长的多通道噪声主动控制方法以参考信号的变化量作为可变步长函数的输入信号,能够改善算法非零失调的状况,对比于其他常用的控制算法,在收敛速度与收敛效果上有明显优势。然后将可变步长算法扩展至多通道主动控制算法,对于大区域的噪声控制的仿真当中,多通道ANC 系统表现出了非常好的降噪效果。同时,多通道ANC 系统的计算量是一个需要进一步研究的重点,这也是未来研究工作的重点。
分享到:
猜你喜欢