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

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

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


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


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


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


目录


💥1 概述


📚2 运行结果


🎉3 参考文献


🌈4 Matlab代码实现


💥1 概述

主动噪声和振动控制问题可用图 1 中的反馈框图来表示:


c20cf417cdf249fc855c956e3bad8b03.png


图中 z 表示性能变量,w 表示外部的输入干扰,反馈控制器 C 的设计是为了使得系统对于外部输入扰动w 的响应 z 应满足某种事先设定的条件。如: 跟踪给定参考值或响应趋于零等。性能变量 z 可以是某些物理量如在某点的加速度,模型能量或空间的扭曲度。观测变量 y 和控制变量 z 包括: 荷载力,扭曲,加速度,速度,角度,压力等,所有的实测量都应通过两个转换器 A 和 S 以变成物理域中的变量。因为每个实验装置中的物理条件的限制使得两个转换器中存在大量的对于观测变量 y 和控制变量 u 约束。饱和是遇到最常见的约束条件,它表示变量被限制在指定的特定范围之间。主动噪声控制中的饱和包括: 扩音器的输出电压和电流范围、麦克风振动的位置范围、微机的荷载力范围、惯性驱动的力范围。饱和约束的产生是因为没有足够的资源来达到期望的输出或者是由于机械和电子的失控而产生的输出。


📚2 运行结果


99af135c67684ef5aca9e8ae4e9103d4.png

f8cdba2a4e4a48ddb903f7eeb9d11014.png

d87012bb9ea14b67aa21c13c1f9febd8.png

06993b3ef7534c0c8b9c82e36a74cb81.png

e40f6e34a27f47d19e08a26d2d58159e.png


部分代码:

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.2011.10.013.


[2]Paulo A. C. Lopes (2023) Careful Feedback Active Noise and Vibration Control Algorithm Robust to Large Secondary Path Changes


🌈4 Matlab代码实现


相关文章
|
13天前
|
算法
基于WOA算法的SVDD参数寻优matlab仿真
该程序利用鲸鱼优化算法(WOA)对支持向量数据描述(SVDD)模型的参数进行优化,以提高数据分类的准确性。通过MATLAB2022A实现,展示了不同信噪比(SNR)下模型的分类误差。WOA通过模拟鲸鱼捕食行为,动态调整SVDD参数,如惩罚因子C和核函数参数γ,以寻找最优参数组合,增强模型的鲁棒性和泛化能力。
|
6天前
|
存储 算法
基于HMM隐马尔可夫模型的金融数据预测算法matlab仿真
本项目基于HMM模型实现金融数据预测,包括模型训练与预测两部分。在MATLAB2022A上运行,通过计算状态转移和观测概率预测未来值,并绘制了预测值、真实值及预测误差的对比图。HMM模型适用于金融市场的时间序列分析,能够有效捕捉隐藏状态及其转换规律,为金融预测提供有力工具。
|
6天前
|
机器学习/深度学习 算法 信息无障碍
基于GoogleNet深度学习网络的手语识别算法matlab仿真
本项目展示了基于GoogleNet的深度学习手语识别算法,使用Matlab2022a实现。通过卷积神经网络(CNN)识别手语手势,如&quot;How are you&quot;、&quot;I am fine&quot;、&quot;I love you&quot;等。核心在于Inception模块,通过多尺度处理和1x1卷积减少计算量,提高效率。项目附带完整代码及操作视频。
|
15天前
|
算法
基于GA遗传算法的PID控制器参数优化matlab建模与仿真
本项目基于遗传算法(GA)优化PID控制器参数,通过空间状态方程构建控制对象,自定义GA的选择、交叉、变异过程,以提高PID控制性能。与使用通用GA工具箱相比,此方法更灵活、针对性强。MATLAB2022A环境下测试,展示了GA优化前后PID控制效果的显著差异。核心代码实现了遗传算法的迭代优化过程,最终通过适应度函数评估并选择了最优PID参数,显著提升了系统响应速度和稳定性。
|
12天前
|
算法
基于WOA鲸鱼优化的购售电收益与风险评估算法matlab仿真
本研究提出了一种基于鲸鱼优化算法(WOA)的购售电收益与风险评估算法。通过将售电公司购售电收益风险计算公式作为WOA的目标函数,经过迭代优化计算出最优购电策略。实验结果表明,在迭代次数超过10次后,风险价值收益优化值达到1715.1万元的最大值。WOA还确定了中长期市场、现货市场及可再生能源等不同市场的最优购电量,验证了算法的有效性。核心程序使用MATLAB2022a实现,通过多次迭代优化,实现了售电公司收益最大化和风险最小化的目标。
|
16天前
|
算法
通过matlab分别对比PSO,反向学习PSO,多策略改进反向学习PSO三种优化算法
本项目使用MATLAB2022A版本,对比分析了PSO、反向学习PSO及多策略改进反向学习PSO三种优化算法的性能,主要通过优化收敛曲线进行直观展示。核心代码实现了标准PSO算法流程,加入反向学习机制及多种改进策略,以提升算法跳出局部最优的能力,增强全局搜索效率。
|
12天前
|
算法
通过matlab对比遗传算法优化前后染色体的变化情况
该程序使用MATLAB2022A实现遗传算法优化染色体的过程,通过迭代选择、交叉和变异操作,提高染色体适应度,优化解的质量,同时保持种群多样性,避免局部最优。代码展示了算法的核心流程,包括适应度计算、选择、交叉、变异等步骤,并通过图表直观展示了优化前后染色体的变化情况。
|
9天前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于深度学习网络的宝石类型识别算法matlab仿真
本项目利用GoogLeNet深度学习网络进行宝石类型识别,实验包括收集多类宝石图像数据集并按7:1:2比例划分。使用Matlab2022a实现算法,提供含中文注释的完整代码及操作视频。GoogLeNet通过其独特的Inception模块,结合数据增强、学习率调整和正则化等优化手段,有效提升了宝石识别的准确性和效率。
|
15天前
|
算法 5G 数据安全/隐私保护
基于MIMO系统的PE-AltMin混合预编码算法matlab性能仿真
本文介绍了基于交替最小化(AltMin)算法的混合预编码技术在MIMO系统中的应用。通过Matlab 2022a仿真,展示了该算法在不同信噪比下的性能表现。核心程序实现了对预编码器和组合器的优化,有效降低了硬件复杂度,同时保持了接近全数字预编码的性能。仿真结果表明,该方法具有良好的鲁棒性和收敛性。
31 8
|
16天前
|
算法
基于大爆炸优化算法的PID控制器参数寻优matlab仿真
本研究基于大爆炸优化算法对PID控制器参数进行寻优,并通过Matlab仿真对比优化前后PID控制效果。使用MATLAB2022a实现核心程序,展示了算法迭代过程及最优PID参数的求解。大爆炸优化算法通过模拟宇宙大爆炸和大收缩过程,在搜索空间中迭代寻找全局最优解,特别适用于PID参数优化,提升控制系统性能。