【主动噪声控制】基于直观的循环卷积惩罚因子的频域输出约束型主动噪声控制算法(Matlab代码实现)

 💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁

目录

💥1 概述

📚2 运行结果

🎉3 参考文献

🌈4 Matlab代码、数据、文章


💥1 概述

摘要:由于它们的计算效率,基于最小均方(LMS)的算法仍然广泛应用于实现主动噪声控制(ANC)应用中的最优控制。然而,尽管频域方法在选择性取消频率等先进ANC功能的实际实现中具有复杂性权衡,但仍然受到复杂性的限制,特别是计算昂贵的频域方法。当前的时域自适应算法——旨在减轻变换复杂性——继续增加复杂性,同时约束时域滤波器中频率间隔的幅度。为了解决时域方法中的现有复杂性,本文提出了一个循环卷积惩罚因子,以协助扩展的渗漏滤波参考LMS(FxLMS)算法在不进行任何频域变换的情况下实现频率约束。这个循环卷积惩罚因子可以通过设计有限响应滤波器的方法来确定,例如频率采样。此外,采用了坐标下降法来进一步减少所提出算法的计算量,显著增加了其在传统实时处理器上实现的可行性。最后,对测得的主路径和次路径进行的数值模拟证明了所提出算法的有效性。

主动噪声控制(ANC)被广泛认为是低频声学噪声抑制的有效方法,尤其是作为消费者耳机的突出特点。它利用辅助源产生精确的抗噪声波,能够在所需位置取消不必要的声音。随着数字信号处理器(DSP)的发展,自适应算法在数字系统中实现主动噪声消除起到了至关重要的作用。与传统的模拟ANC相比,自适应方法可以自动调整其滤波器系数,以适应不断变化的声学环境和噪声类型,从而实现最优控制。另一方面,已经开发了许多专门用于ANC系统的自适应算法。在这些算法中,滤波参考最小均方(FxLMS)算法因其计算效率而被广泛应用于实际ANC系统中。此外,通过过滤参考输入,它补偿了由于次路径引起的延迟,从而解决了普通最小均方(LMS)算法在ANC中的收敛问题。

然而,自适应ANC系统面临着许多实际困难。例如,自适应控制算法通常设计为将误差传感器处的均方声压最小化,因此它们倾向于最小化扰动中的所有频率分量。在这种情况下,许多特定频率的有用声音,如警报和汽车排放声音,将被取消。忽略这些关键声音可能会危及用户的安全,特别是如果他们戴着ANC耳机。在一些制造业中,减少所有噪声将影响工人对机器故障的识别。此外,人耳通常只对特定频率范围的噪声敏感。因此,减少全频段噪声是浪费的,也容易导致具有有限输出功率的紧凑型ANC设备的输出饱和失真。在这种情况下,看来对实际中的主动控制算法进行频率约束是必要的。

子带自适应算法显示出解决这个问题的潜力。由于它将输入信号分解为不同的频带,我们可以选择处理我们所需的频率范围内的噪声。然而,由于增加了计算复杂性,它在实时ANC系统中的使用受到限制。其分析滤波器组引入的额外延迟还降低了系统的稳定性边界。另一种方法是将频域惩罚项纳入成本函数中,从而约束自适应滤波器的频率分量。为了进一步减少所需傅里叶变换中的计算量,最近开发了一种新颖的频域FxLMS算法,它采用了分割滤波和通过在自适应滤波器的每个分割中实施惩罚或丢弃来实现频率分段约束。尽管大量的分割数可以显著减少计算量,但它显著恶化了约束的频率分辨率。值得注意的是,所有先前的频率约束自适应算法都使用了傅里叶变换,这不可避免地增加了处理器的计算负载,从而限制了它们的实用性。

📚2 运行结果

部分代码:

%% Configuring the parameters of the ANC system simulaiton
fs = 16000     ;% sampling rate 
T  = 600      ; % the simulation duration 1350 2000
t  = 0:1/fs:T  ;
N  = length(t) ;

% This simulation time is for the FxLMS algorithm 
T2 = 600 ;
t2 = 0:1/fs:T2 ;
N2 = length(t2);

%% Loading the primary path and secondary path.
if exist('Path.mat','file')==0
    Primary_Secondary_path_generation();
else
    load('Path.mat');
end

%% Generating the primary noise and disturbance 
Re = Board_noise_generation(fs, 300, 1500, N) ;
Disturbance = awgn(filter(Pri_path',1,Re),60) ;

Re_0 = Re(1:N2);
Disturbance_0 = Disturbance(1:N2);

%% Testing the Leaky FxLMS  
muW = 0.00005;
Len = 256;

🎉3 参考文献

文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。

🌈4 Matlab代码、数据、文章

  • 11
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值