【特征提取】基于麻雀算法优化VMD实现西储大学数据集故障信号特征提取附matlab代码

简介: 【特征提取】基于麻雀算法优化VMD实现西储大学数据集故障信号特征提取附matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。

🍎个人主页:Matlab科研工作室

🍊个人信条:格物致知。

更多Matlab仿真内容点击👇

智能优化算法       神经网络预测       雷达通信      无线传感器        电力系统

信号处理              图像处理               路径规划       元胞自动机        无人机

⛄ 内容介绍

一种基于SSAVMD算法的信号去噪方法,具体为:根据麻雀优化算法数学模型,然后进行初始化参数,在取值范围内初始化麻雀的位置向量,根据位置向量对原始振动信号进行VMD分解,然后计算每个麻雀位置下的平均包络熵;更新最小平均包络熵,即获得当前群体中最佳个体的位置更新当前麻雀个体的空间位置;输出最佳麻雀个体的位置向量,即得VMD的分解参数组合;根据所得到的分解参数组合对信号进行VMD分解,将分解出IMF分量相加得到重构信号,即得去噪后的信号.本发明解决了现有技术中存在的原始VMD算法的分解参数需要根据经验进行人工确定,导致无法得到最优分解结果,从而影响信号的去噪效果的问题.

⛄ 部分代码

function [u, u_hat, omega] = VMD(signal, alpha, tau, K, DC, init, tol)

% Variational Mode Decomposition

% Authors: Konstantin Dragomiretskiy and Dominique Zosso

% zosso@math.ucla.edu --- http://www.math.ucla.edu/~zosso

% Initial release 2013-12-12 (c) 2013

%

% Input and Parameters:

% ---------------------

% signal  - the time domain signal (1D) to be decomposed

% alpha   - the balancing parameter of the data-fidelity constraint

% tau     - time-step of the dual ascent ( pick 0 for noise-slack )

% K       - the number of modes to be recovered

% DC      - true if the first mode is put and kept at DC (0-freq)

% init    - 0 = all omegas start at 0

%                    1 = all omegas start uniformly distributed

%                    2 = all omegas initialized randomly

% tol     - tolerance of convergence criterion; typically around 1e-6

%

% Output:

% -------

% u       - the collection of decomposed modes

% u_hat   - spectra of the modes

% omega   - estimated mode center-frequencies

%

% When using this code, please do cite our paper:

% -----------------------------------------------

% K. Dragomiretskiy, D. Zosso, Variational Mode Decomposition, IEEE Trans.

% on Signal Processing (in press)

% please check here for update reference:

%          http://dx.doi.org/10.1109/TSP.2013.2288675




%---------- Preparations


% Period and sampling frequency of input signal

save_T = length(signal);

fs = 1/save_T;


% extend the signal by mirroring

T = save_T;

f_mirror(1:T/2) = signal(T/2:-1:1);

f_mirror(T/2+1:3*T/2) = signal;

f_mirror(3*T/2+1:2*T) = signal(T:-1:T/2+1);

f = f_mirror;


% Time Domain 0 to T (of mirrored signal)

T = length(f);

t = (1:T)/T;


% Spectral Domain discretization

freqs = t-0.5-1/T;


% Maximum number of iterations (if not converged yet, then it won't anyway)

N = 500;


% For future generalizations: individual alpha for each mode

Alpha = alpha*ones(1,K);


% Construct and center f_hat

f_hat = fftshift((fft(f)));

f_hat_plus = f_hat;

f_hat_plus(1:T/2) = 0;


% matrix keeping track of every iterant // could be discarded for mem

u_hat_plus = zeros(N, length(freqs), K);


% Initialization of omega_k

omega_plus = zeros(N, K);

switch init

   case 1

       for i = 1:K

           omega_plus(1,i) = (0.5/K)*(i-1);

       end

   case 2

       omega_plus(1,:) = sort(exp(log(fs) + (log(0.5)-log(fs))*rand(1,K)));

   otherwise

       omega_plus(1,:) = 0;

end


% if DC mode imposed, set its omega to 0

if DC

   omega_plus(1,1) = 0;

end


% start with empty dual variables

lambda_hat = zeros(N, length(freqs));


% other inits

uDiff = tol+eps; % update step

n = 1; % loop counter

sum_uk = 0; % accumulator




% ----------- Main loop for iterative updates





while ( uDiff > tol &&  n < N ) % not converged and below iterations limit

   

   % update first mode accumulator

   k = 1;

   sum_uk = u_hat_plus(n,:,K) + sum_uk - u_hat_plus(n,:,1);

   

   % update spectrum of first mode through Wiener filter of residuals

   u_hat_plus(n+1,:,k) = (f_hat_plus - sum_uk - lambda_hat(n,:)/2)./(1+Alpha(1,k)*(freqs - omega_plus(n,k)).^2);

   

   % update first omega if not held at 0

   if ~DC

       omega_plus(n+1,k) = (freqs(T/2+1:T)*(abs(u_hat_plus(n+1, T/2+1:T, k)).^2)')/sum(abs(u_hat_plus(n+1,T/2+1:T,k)).^2);

   end

   

   % update of any other mode

   for k=2:K

       

       % accumulator

       sum_uk = u_hat_plus(n+1,:,k-1) + sum_uk - u_hat_plus(n,:,k);

       

       % mode spectrum

       u_hat_plus(n+1,:,k) = (f_hat_plus - sum_uk - lambda_hat(n,:)/2)./(1+Alpha(1,k)*(freqs - omega_plus(n,k)).^2);

       

       % center frequencies

       omega_plus(n+1,k) = (freqs(T/2+1:T)*(abs(u_hat_plus(n+1, T/2+1:T, k)).^2)')/sum(abs(u_hat_plus(n+1,T/2+1:T,k)).^2);

       

   end

   

   % Dual ascent

   lambda_hat(n+1,:) = lambda_hat(n,:) + tau*(sum(u_hat_plus(n+1,:,:),3) - f_hat_plus);

   

   % loop counter

   n = n+1;

   

   % converged yet?

   uDiff = eps;

   for i=1:K

       uDiff = uDiff + 1/T*(u_hat_plus(n,:,i)-u_hat_plus(n-1,:,i))*conj((u_hat_plus(n,:,i)-u_hat_plus(n-1,:,i)))';

   end

   uDiff = abs(uDiff);

   

end



%------ Postprocessing and cleanup



% discard empty space if converged early

N = min(N,n);

omega = omega_plus(1:N,:);


% Signal reconstruction

u_hat = zeros(T, K);

u_hat((T/2+1):T,:) = squeeze(u_hat_plus(N,(T/2+1):T,:));

u_hat((T/2+1):-1:2,:) = squeeze(conj(u_hat_plus(N,(T/2+1):T,:)));

u_hat(1,:) = conj(u_hat(end,:));


u = zeros(K,length(t));


for k = 1:K

   u(k,:)=real(ifft(ifftshift(u_hat(:,k))));

end


% remove mirror part

u = u(:,T/4+1:3*T/4);


% recompute spectrum

clear u_hat;

for k = 1:K

   u_hat(:,k)=fftshift(fft(u(k,:)))';

end


end

⛄ 运行结果

⛄ 参考文献

[1]孟博, 余中舟, 郇战,等. 基于VMD-SSA-LSSVM的齿轮箱故障检测模型:, CN114964783A[P]. 2022.

[2]逯全波. 基于改进VMD的滚动轴承故障无线监测系统[D]. 重庆三峡学院.

⛳️ 完整代码

❤️部分理论引用网络文献,若有侵权联系博主删除
❤️ 关注我领取海量matlab电子书和数学建模资料


相关文章
|
1天前
|
传感器 算法
基于GA遗传算法的多机无源定位系统GDOP优化matlab仿真
本项目基于遗传算法(GA)优化多机无源定位系统的GDOP,使用MATLAB2022A进行仿真。通过遗传算法的选择、交叉和变异操作,迭代优化传感器配置,最小化GDOP值,提高定位精度。仿真输出包括GDOP优化结果、遗传算法收敛曲线及三维空间坐标点分布图。核心程序实现了染色体编码、适应度评估、遗传操作等关键步骤,最终展示优化后的传感器布局及其性能。
|
3天前
|
算法
基于SOA海鸥优化算法的三维曲面最高点搜索matlab仿真
本程序基于海鸥优化算法(SOA)进行三维曲面最高点搜索的MATLAB仿真,输出收敛曲线和搜索结果。使用MATLAB2022A版本运行,核心代码实现种群初始化、适应度计算、交叉变异等操作。SOA模拟海鸥觅食行为,通过搜索飞行、跟随飞行和掠食飞行三种策略高效探索解空间,找到全局最优解。
|
5天前
|
机器学习/深度学习 数据采集 算法
基于GWO灰狼优化的CNN-GRU-SAM网络时间序列回归预测算法matlab仿真
本项目基于MATLAB2022a,展示了时间序列预测算法的运行效果(无水印)。核心程序包含详细中文注释和操作视频。算法采用CNN-GRU-SAM网络,结合灰狼优化(GWO),通过卷积层提取局部特征、GRU处理长期依赖、自注意力机制捕捉全局特征,最终实现复杂非线性时间序列的高效预测。
|
5天前
|
传感器 算法 物联网
基于粒子群算法的网络最优节点部署优化matlab仿真
本项目基于粒子群优化(PSO)算法,实现WSN网络节点的最优部署,以最大化节点覆盖范围。使用MATLAB2022A进行开发与测试,展示了优化后的节点分布及其覆盖范围。核心代码通过定义目标函数和约束条件,利用PSO算法迭代搜索最佳节点位置,并绘制优化结果图。PSO算法灵感源于鸟群觅食行为,适用于连续和离散空间的优化问题,在通信网络、物联网等领域有广泛应用。该算法通过模拟粒子群体智慧,高效逼近最优解,提升网络性能。
|
6天前
|
机器学习/深度学习 存储 算法
近端策略优化(PPO)算法的理论基础与PyTorch代码详解
近端策略优化(PPO)是深度强化学习中高效的策略优化方法,广泛应用于大语言模型的RLHF训练。PPO通过引入策略更新约束机制,平衡了更新幅度,提升了训练稳定性。其核心思想是在优势演员-评论家方法的基础上,采用裁剪和非裁剪项组成的替代目标函数,限制策略比率在[1-ϵ, 1+ϵ]区间内,防止过大的策略更新。本文详细探讨了PPO的基本原理、损失函数设计及PyTorch实现流程,提供了完整的代码示例。
114 10
近端策略优化(PPO)算法的理论基础与PyTorch代码详解
|
6月前
|
安全
【2023高教社杯】D题 圈养湖羊的空间利用率 问题分析、数学模型及MATLAB代码
本文介绍了2023年高教社杯数学建模竞赛D题的圈养湖羊空间利用率问题,包括问题分析、数学模型建立和MATLAB代码实现,旨在优化养殖场的生产计划和空间利用效率。
272 6
【2023高教社杯】D题 圈养湖羊的空间利用率 问题分析、数学模型及MATLAB代码
|
6月前
|
数据采集 存储 移动开发
【2023五一杯数学建模】 B题 快递需求分析问题 建模方案及MATLAB实现代码
本文介绍了2023年五一杯数学建模竞赛B题的解题方法,详细阐述了如何通过数学建模和MATLAB编程来分析快递需求、预测运输数量、优化运输成本,并估计固定和非固定需求,提供了完整的建模方案和代码实现。
138 0
【2023五一杯数学建模】 B题 快递需求分析问题 建模方案及MATLAB实现代码
|
6月前
|
存储 算法 搜索推荐
【2022年华为杯数学建模】B题 方形件组批优化问题 方案及MATLAB代码实现
本文提供了2022年华为杯数学建模竞赛B题的详细方案和MATLAB代码实现,包括方形件组批优化问题和排样优化问题,以及相关数学模型的建立和求解方法。
162 3
【2022年华为杯数学建模】B题 方形件组批优化问题 方案及MATLAB代码实现
|
9月前
|
数据安全/隐私保护
地震波功率谱密度函数、功率谱密度曲线,反应谱转功率谱,matlab代码
地震波格式转换、时程转换、峰值调整、规范反应谱、计算反应谱、计算持时、生成人工波、时频域转换、数据滤波、基线校正、Arias截波、傅里叶变换、耐震时程曲线、脉冲波合成与提取、三联反应谱、地震动参数、延性反应谱、地震波缩尺、功率谱密度
|
9月前
|
数据安全/隐私保护
耐震时程曲线,matlab代码,自定义反应谱与地震波,优化源代码,地震波耐震时程曲线
地震波格式转换、时程转换、峰值调整、规范反应谱、计算反应谱、计算持时、生成人工波、时频域转换、数据滤波、基线校正、Arias截波、傅里叶变换、耐震时程曲线、脉冲波合成与提取、三联反应谱、地震动参数、延性反应谱、地震波缩尺、功率谱密度

热门文章

最新文章