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代码实现


相关文章
|
12天前
|
算法 BI Serverless
基于鱼群算法的散热片形状优化matlab仿真
本研究利用浴盆曲线模拟空隙外形,并通过鱼群算法(FSA)优化浴盆曲线参数,以获得最佳孔隙度值及对应的R值。FSA通过模拟鱼群的聚群、避障和觅食行为,实现高效全局搜索。具体步骤包括初始化鱼群、计算适应度值、更新位置及判断终止条件。最终确定散热片的最佳形状参数。仿真结果显示该方法能显著提高优化效率。相关代码使用MATLAB 2022a实现。
|
12天前
|
算法 数据可视化
基于SSA奇异谱分析算法的时间序列趋势线提取matlab仿真
奇异谱分析(SSA)是一种基于奇异值分解(SVD)和轨迹矩阵的非线性、非参数时间序列分析方法,适用于提取趋势、周期性和噪声成分。本项目使用MATLAB 2022a版本实现从强干扰序列中提取趋势线,并通过可视化展示了原时间序列与提取的趋势分量。代码实现了滑动窗口下的奇异值分解和分组重构,适用于非线性和非平稳时间序列分析。此方法在气候变化、金融市场和生物医学信号处理等领域有广泛应用。
|
13天前
|
资源调度 算法
基于迭代扩展卡尔曼滤波算法的倒立摆控制系统matlab仿真
本课题研究基于迭代扩展卡尔曼滤波算法的倒立摆控制系统,并对比UKF、EKF、迭代UKF和迭代EKF的控制效果。倒立摆作为典型的非线性系统,适用于评估不同滤波方法的性能。UKF采用无迹变换逼近非线性函数,避免了EKF中的截断误差;EKF则通过泰勒级数展开近似非线性函数;迭代EKF和迭代UKF通过多次迭代提高状态估计精度。系统使用MATLAB 2022a进行仿真和分析,结果显示UKF和迭代UKF在非线性强的系统中表现更佳,但计算复杂度较高;EKF和迭代EKF则更适合维数较高或计算受限的场景。
|
15天前
|
算法
基于SIR模型的疫情发展趋势预测算法matlab仿真
该程序基于SIR模型预测疫情发展趋势,通过MATLAB 2022a版实现病例增长拟合分析,比较疫情防控力度。使用SIR微分方程模型拟合疫情发展过程,优化参数并求解微分方程组以预测易感者(S)、感染者(I)和移除者(R)的数量变化。![]该模型将总人群分为S、I、R三部分,通过解析或数值求解微分方程组预测疫情趋势。
|
15天前
|
算法 数据可视化 数据安全/隐私保护
基于LK光流提取算法的图像序列晃动程度计算matlab仿真
该算法基于Lucas-Kanade光流方法,用于计算图像序列的晃动程度。通过计算相邻帧间的光流场并定义晃动程度指标(如RMS),可量化图像晃动。此版本适用于Matlab 2022a,提供详细中文注释与操作视频。完整代码无水印。
|
4天前
|
算法
基于极大似然算法的系统参数辨识matlab仿真
本程序基于极大似然算法实现系统参数辨识,对参数a1、b1、a2、b2进行估计,并计算估计误差及收敛曲线,对比不同信噪比下的误差表现。在MATLAB2022a版本中运行,展示了参数估计值及其误差曲线。极大似然估计方法通过最大化观测数据的似然函数来估计未知参数,适用于多种系统模型。
|
6天前
|
机器学习/深度学习 算法
基于小波神经网络的数据分类算法matlab仿真
该程序基于小波神经网络实现数据分类,输入为5个特征值,输出为“是”或“否”。使用MATLAB 2022a版本,50组数据训练,30组数据验证。通过小波函数捕捉数据局部特征,提高分类性能。训练误差和识别结果通过图表展示。
|
30天前
|
算法 数据安全/隐私保护
基于LS算法的OFDM+QPSK系统信道估计均衡matlab性能仿真
基于MATLAB 2022a的仿真展示了OFDM+QPSK系统中最小二乘(LS)算法的信道估计与均衡效果。OFDM利用多个低速率子载波提高频谱效率,通过循环前缀克服多径衰落。LS算法依据导频符号估计信道参数,进而设计均衡器以恢复数据符号。核心程序实现了OFDM信号处理流程,包括加性高斯白噪声的加入、保护间隔去除、快速傅立叶变换及信道估计与均衡等步骤,并最终计算误码率,验证了算法的有效性。
47 2
|
30天前
|
算法
基于GA-PSO遗传粒子群混合优化算法的CVRP问题求解matlab仿真
本文介绍了一种基于GA-PSO混合优化算法求解带容量限制的车辆路径问题(CVRP)的方法。在MATLAB2022a环境下运行,通过遗传算法的全局搜索与粒子群算法的局部优化能力互补,高效寻找最优解。程序采用自然数编码策略,通过选择、交叉、变异操作及粒子速度和位置更新,不断迭代直至满足终止条件,旨在最小化总行驶距离的同时满足客户需求和车辆载重限制。
|
20天前
|
数据采集 算法
基于PSO粒子群算法的三角形采集堆轨道优化matlab仿真
该程序利用PSO算法优化5个4*20矩阵中的模块采集轨迹,确保采集的物品数量及元素含量符合要求。在MATLAB2022a上运行,通过迭代寻优,选择最佳模块组合并优化轨道,使采集效率、路径长度及时间等综合指标最优。具体算法实现了粒子状态更新、需求量差值评估及轨迹优化等功能,最终输出最优轨迹及其相关性能指标。