MATLAB|主动噪声和振动控制算法——对较大的次级路径变化具有鲁棒性

简介: MATLAB|主动噪声和振动控制算法——对较大的次级路径变化具有鲁棒性

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

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

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

📋📋📋本文内容如下:🎁🎁🎁

⛳️赠与读者

👨‍💻做科研,涉及到一个深在的思想系统,需要科研者逻辑缜密,踏实认真,但是不能只是努力,很多时候借力比努力更重要,然后还要有仰望星空的创新点和启发点。建议读者按目录次序逐一浏览,免得骤然跌入幽暗的迷宫找不到来时的路,它不足为你揭示全部问题的答案,但若能解答你胸中升起的一朵朵疑云,也未尝不会酿成晚霞斑斓的别一番景致,万一它给你带来了一场精神世界的苦雨,那就借机洗刷一下原来存放在那儿的“躺平”上的尘埃吧。

    或许,雨过云收,神驰的天地更清朗.......🔎🔎🔎

💥1 概述

主动噪声和振动控制算法对较大次级路径变化的鲁棒性研究

一、引言

主动噪声和振动控制(ANC/AVC)技术作为一种有效的降噪和减振手段,在环境保护、工业降噪、设备减振等领域有着广泛的应用前景。ANC/AVC系统的核心在于其控制算法的设计,算法的性能直接决定了系统的控制效果。其中,一个至关重要的评价指标便是算法对次级路径变化的鲁棒性。次级路径是指从控制源(如扬声器或振动器)到误差传感器之间的传递函数。在实际应用中,由于环境因素、温度变化、设备老化、传感器位置移动、负载变化等原因,次级路径不可避免地会发生变化。如果ANC/AVC算法对这些变化不够鲁棒,会导致控制性能下降,甚至系统不稳定,最终丧失控制效果。

二、次级路径变化对ANC/AVC算法性能的影响

传统的ANC/AVC算法,如基于自适应滤波器的控制方法(特别是基于FXLMS算法及其变种),在次级路径相对稳定时可以获得良好的控制效果。然而,这些算法往往对次级路径的变化非常敏感。当次级路径发生显著变化时,传统算法可能会出现以下问题:

  1. 收敛速度下降:不准确的滤波参考信号使得梯度估计不够准确,从而减缓了算法的收敛速度。
  2. 稳态误差增大:即使算法收敛,由于次级路径模型的误差,控制输出无法完全抵消期望信号,导致残余误差增大。
  3. 系统不稳定:当次级路径变化较大时,尤其是相位变化,可能导致算法收敛方向错误,甚至引起系统振荡,最终导致系统失稳。

三、提升ANC/AVC算法鲁棒性的策略

为了提高ANC/AVC算法对次级路径变化的鲁棒性,研究者提出了多种有效的策略,这些策略主要可以分为以下几类:

  1. 基于在线次级路径建模的自适应算法
  • 同时自适应算法:这类算法在控制滤波器自适应的同时,利用辅助参考信号或系统输入输出信号对次级路径进行估计。例如,经典的Filtered-x NLMS(FxNLMS)算法可以通过引入一个并行的次级路径估计滤波器来实现。
  • 开关式次级路径估计:当次级路径变化发生时,算法可以切换到次级路径估计模式,在短时间内快速更新次级路径模型,然后切换回控制模式。这种方法适用于次级路径发生突变的情况。
  1. 鲁棒自适应滤波算法
  • 改进代价函数:传统的FXLMS算法最小化误差信号的均方值,容易受到异常误差或模型误差的影响。可以采用其他鲁棒的代价函数,如最小均方误差的变种(例如,加权最小二乘法)或基于L1范数的代价函数,来降低次级路径模型误差对算法收敛的影响。
  • 步长控制策略:设计一个具有鲁棒性的步长控制策略,使得当次级路径模型误差较大时,步长减小,以避免系统不稳定;当模型误差较小时,步长增大,以提高收敛速度。
  • 鲁棒自适应滤波器设计:考虑次级路径模型的估计误差作为一种不确定性,设计鲁棒的自适应滤波器。例如,基于H-无穷控制理论或滑动模态控制思想的自适应滤波器,可以在存在模型不确定性的情况下保证系统的稳定性。
  1. 基于模型的控制方法
  • 模型预测控制(MPC):MPC利用当前时刻的系统状态和预测模型,在未来一段时间内优化控制输入序列,以最小化一个代价函数。在ANC/AVC中,可以将次级路径模型作为预测模型的一部分,并在优化过程中考虑次级路径的不确定性。MPC能够处理约束和非线性系统,并且在应对模型不确定性方面具有一定的鲁棒性。然而,MPC通常计算量较大,实时实现可能具有挑战性。
  • 鲁棒控制理论应用:利用鲁棒控制理论(如H-无穷控制、滑模控制)设计控制器,以确保系统在存在次级路径模型不确定性时仍然稳定并保持一定的性能。这些方法需要建立次级路径模型的数学描述,并分析其不确定性范围。

四、MATLAB仿真验证

MATLAB凭借其强大的数值计算、信号处理和控制系统工具箱,为ANC/AVC算法的研究、开发和验证提供了便捷高效的环境。通过构建不同的次级路径模型,并进行FXLMS算法的仿真,可以直观地观察次级路径变化对算法性能的影响。例如,可以模拟一个具有时变特性的次级路径,观察算法在不同时刻的收敛曲线和稳态误差。仿真结果将清晰地展示出,随着实际次级路径与估计模型的差异增大,FXLMS算法的性能会显著恶化。

同时,利用MATLAB还可以实现上述提升算法鲁棒性的各种策略,并进行仿真验证。例如,可以构建包含主控制通路和次级路径估计通路的仿真模型,验证同时自适应算法的性能;可以利用优化工具箱或控制系统工具箱实现鲁棒自适应滤波算法和基于模型的控制方法,并比较它们的性能差异。

五、未来研究方向

尽管已经取得了一定的进展,但提升ANC/AVC算法对较大次级路径变化的鲁棒性仍然是一个活跃的研究领域。未来的研究应更加关注以下几个方面:

  1. 更加高效的在线次级路径建模方法:研究能够快速、准确地估计次级路径变化的算法,尤其是在存在强耦合或噪声的情况下。减少辅助噪声的影响,降低计算复杂度,提高建模精度。
  2. 更加鲁棒的自适应滤波算法:在保持良好控制性能的前提下,提高对次级路径变化的抵抗能力。利用神经网络学习次级路径的非线性特征,优化控制策略。
  3. 多传感器信息融合:利用多个传感器的信息,提高对环境变化的感知能力,增强系统的鲁棒性。

📚2 运行结果

image.gif 编辑

image.gif 编辑

image.gif 编辑 image.gif 编辑

image.gif 编辑

部分代码:

stability_margin = 0.1;     % distance of model poles and zeros from the unit circle

f = 200*(1:3)';             % primary noise sinusoids frequencies

amplitudes = [0.5, 1.2, 0.3]';      % primary noise sinusoids amplitudes

phases = [56, 170, -23]'*pi/180;    % primary noise sinusoids phases

frequency_noise = 0;        % rms Hz

Nx = 6;                     % model order (size-1)

on_id = 100;                % system identification start

on = 1000;                  % ANC start

qv0 = 0.01;                 % background noise power

% algorithm parameters

N = 15;                     % model order (size-1)

L = 64;                     % MPC horizont length

M = 32*(N+1);               % algorithm memory

P = M;                      % size of qv estimation blocks

R = N;                      % size of qv estimation blocks

Lu = 10;                    % saturation of the antinoise signal

wd = 10000;                 % keep past control signals constant

wu = 1e-6;                  % effort weigth on control signal u

deltax = 1e-3;              % prior 1/sigma^2 pior of a and b (x)

delta = 1e-9;               % actual value added Rxx to calc Sxx (<deltax)

alpha = 0;                  % controls auxiliary noise power

eta = 1.01;                 % max grouth rate of u (per sin half period)

Q = 8;                      % control signal update interval

% Signal logs

log_e = nan*zeros(simulation_time, Nsim);

log_u = nan*zeros(simulation_time, Nsim);

log_xi = nan*zeros(simulation_time, Nsim);

log_xi0 = nan*zeros(simulation_time, Nsim);

log_qv = nan*zeros(simulation_time, Nsim);

for n_sim = 1:Nsim

   tic

   rng(343989 + n_sim);

 

   % simulation intializations

   frequency = f' + frequency_noise*randn(simulation_time+L, length(f));

   phase = 2*pi*cumsum(frequency)/fs + phases';

   d0 = sin(phase)*amplitudes;

   d = d0 + sqrt(qv0)*randn(simulation_time+L, 1);  % primary noise signal

   [a,b] = generate_plant(Nx, stability_margin);

   

   uv = zeros(max(M+N+1, 2*L), 1);        % anti-noise buffer

   e1v = zeros(Nx+1, 1);    % residual noise minus background noise buffer

   % algorithm initialization

   u = 0;                   % anti-noise signal

   ev = zeros(M+N,1);       % residual noise buffer

   wuv = wu*ones(L+N,1);

   wev = ones(L,1);

   for k = 1:simulation_time

       

       % simulation

       qn = qn_steady + qn_change*(abs(k-change_at)<=change_time/2);

       a(2:end) = a(2:end) + std(a(2:end))*sqrt(qn)*randn(Nx,1);

       b = b + std(b)*sqrt(qn)*randn(Nx+1,1);

       if qn > 0

           [a,b] = adjust_plant(a,b,stability_margin);

       end

%         if k == change_at

%             b = - b;

%         end

       

       log_u(k,n_sim) = u;    % logs u(n) and not u(n+1)

             

       uv = [u; uv(1:end-1)]; % simulation and algorithm

🎉3 参考文献

文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。(文章内容仅供参考,具体效果以运行结果为准)

[1]王建宏,王道波.子空间预测控制算法在主动噪声振动中的应用[J].振动与冲击,2011,30(10):129-135.DOI:10.13465/j.cnki.jvs

相关文章
|
2月前
|
机器学习/深度学习 算法 机器人
【水下图像增强融合算法】基于融合的水下图像与视频增强研究(Matlab代码实现)
【水下图像增强融合算法】基于融合的水下图像与视频增强研究(Matlab代码实现)
203 0
|
2月前
|
数据采集 分布式计算 并行计算
mRMR算法实现特征选择-MATLAB
mRMR算法实现特征选择-MATLAB
152 2
|
2月前
|
机器学习/深度学习 算法 C++
【DFS/回溯算法】2016年蓝桥杯真题之路径之谜详解
题目要求根据城堡北墙和西墙箭靶上的箭数,推断骑士从西北角到东南角的唯一路径。每步移动时向正北和正西各射一箭,同一格不重复经过。通过DFS回溯模拟“拔箭”过程,验证路径合法性。已知箭数约束路径唯一,最终按编号输出行走顺序。
|
2月前
|
机器学习/深度学习 算法 机器人
使用哈里斯角Harris和SIFT算法来实现局部特征匹配(Matlab代码实现)
使用哈里斯角Harris和SIFT算法来实现局部特征匹配(Matlab代码实现)
142 8
|
2月前
|
机器学习/深度学习 算法 自动驾驶
基于导向滤波的暗通道去雾算法在灰度与彩色图像可见度复原中的研究(Matlab代码实现)
基于导向滤波的暗通道去雾算法在灰度与彩色图像可见度复原中的研究(Matlab代码实现)
154 8
|
2月前
|
机器学习/深度学习 算法 数据可视化
基于MVO多元宇宙优化的DBSCAN聚类算法matlab仿真
本程序基于MATLAB实现MVO优化的DBSCAN聚类算法,通过多元宇宙优化自动搜索最优参数Eps与MinPts,提升聚类精度。对比传统DBSCAN,MVO-DBSCAN有效克服参数依赖问题,适应复杂数据分布,增强鲁棒性,适用于非均匀密度数据集的高效聚类分析。
|
2月前
|
开发框架 算法 .NET
基于ADMM无穷范数检测算法的MIMO通信系统信号检测MATLAB仿真,对比ML,MMSE,ZF以及LAMA
简介:本文介绍基于ADMM的MIMO信号检测算法,结合无穷范数优化与交替方向乘子法,降低计算复杂度并提升检测性能。涵盖MATLAB 2024b实现效果图、核心代码及详细注释,并对比ML、MMSE、ZF、OCD_MMSE与LAMA等算法。重点分析LAMA基于消息传递的低复杂度优势,适用于大规模MIMO系统,为通信系统检测提供理论支持与实践方案。(238字)
|
2月前
|
机器学习/深度学习 数据采集 负载均衡
结合多种启发式解码方法的混合多目标进化算法,用于解决带工人约束的混合流水车间调度问题(Matlab代码实现)
结合多种启发式解码方法的混合多目标进化算法,用于解决带工人约束的混合流水车间调度问题(Matlab代码实现)
129 0
|
2月前
|
机器学习/深度学习 人工智能 算法
【基于TTNRBO优化DBN回归预测】基于瞬态三角牛顿-拉夫逊优化算法(TTNRBO)优化深度信念网络(DBN)数据回归预测研究(Matlab代码实现)
【基于TTNRBO优化DBN回归预测】基于瞬态三角牛顿-拉夫逊优化算法(TTNRBO)优化深度信念网络(DBN)数据回归预测研究(Matlab代码实现)
120 0
|
2月前
|
存储 监控 并行计算
目标跟踪中常用点迹航迹数据关联算法的MATLAB实现
通过计算测量点与预测点之间的欧氏距离,选择最近邻点进行关联,适用于单目标跟踪场景。

热门文章

最新文章