【故障诊断】基于PSO_VMD_MCKD方法的风机轴承微弱故障诊断
目录
- 一、基本理论
- 1. PSO算法
- 2. VMD算法
- 3. MCKD算法
- 3.1 算法简介
- 3.2 算法原理
- 二、PSO_VMD_MCKD
- 三、MATLAB代码
- 参考文献
一、基本理论
1. PSO算法
有关PSO的介绍请阅读博文:PSO-LSSVM算法及其MATLAB代码
2. VMD算法
有关VMD的介绍请阅读博文:VMD算法
3. MCKD算法
3.1 算法简介
最大相关峭度解卷积(Maximum Correlated Kurtosis Deconvolution,简称MCKD)通过解卷积运算突出被噪声淹没的连续脉冲,提高原始信号的相关峭度值,适用于提取微弱故障信号的连续瞬态冲击。
3.2 算法原理
MCKD算法的实质是寻找一个FIR滤波器来恢复被噪声淹没的连续冲击信号,而为了验证该滤波器恢复出的信号是否满足周期性冲击特性,需要利用相关峭度指标来衡量。相关峭度定义为:
C K M ( T ) = ∑ n = 1 N ( ∏ m = 0 M y n − m T ) 2 ( ∑ i = 1 N y n 2 ) M + 1 CK _{M}(T)= \frac{ \sum_{n=1}^{N} ( \prod ^M_{m=0} y_{n}-mT)^2 } { (\sum_{i=1}^{N} y_{n}^{2} )^{M+1} } CKM(T)=(∑i=1Nyn2)M+1∑n=1N(∏m=0Myn−mT)2
其中, T T T为冲击信号周期; M M M为移位数; m ∈ [ 0 , M ] m∈[0,M] m∈[0,M]; L 为 滤 波 器 的 长 度 L为滤波器的长度 L为滤波器的长度; y n y_{n} yn为冲击信号。
对信号进行滤波,当相关峭度 C K M ( T ) CK_{M}(T) CKM(T)最大时,求解出来的滤波器就是满足要求的。假设输入信号为 x x x,输出信号为 y y y,FIR滤波器对信号进行滤波的原理如下:
y = f ∗ x y = f * x y=f∗x
求解上式中的滤波器系数 f f f ,就是解卷积运算的过程。
二、PSO_VMD_MCKD
为实现 VMD 和 MCKD 的参数自适应选择,采用粒子群优化算法对两种算法中的参数进行优化,确定适应度函数为包络谱峰值因子。
方法流程:
1)设定VMD的模态数 K 和惩罚因子 alpha 的寻优范围,利用PSO对VMD算法进行参数寻优;
2)得到VMD的最优模态数 Best_K 和最优惩罚因子 Best_alpha ,再利用VMD对原始信号进行分解,计算各分量的包络谱峰值因子 Ec,选择 Ec 指标最大的分量为最优分量;
3)设定MCKD的滤波器长度参数 L 和 解卷积周期T的寻优范围,利用PSO对VMD算法进行参数寻优;
4)得到MCKD的最优滤波器长度参数 Best_L 和 最优解卷积周期Best_T,再对最优分量进行MCKD分析,最后对解卷积后的信号进行包络解调。
三、MATLAB代码
Simulating_faultSignal.m:产生仿真信号
clc;
clear;
close all;
%% 仿真信号
A0 = 0.5; % 位移常数
fr = 25; % 转频
C = 800; % 衰减系数
fn = 4e3; % 共振频率
T = 1/120; % 重复周期
fs = 12800; % 采样频率
N = 8192; % 采样点数
SNR = -16; % 信噪比
NT = round(fs*T); % 单周期采样点数
t0 = (0:NT-1)/fs; % 单周期采样时间
t = (0:N-1)/fs; % 采样时间
k = ceil(N/NT)-1; % 重复次数x = [];
% 产生k个相同波形
for i = 1:kt1 = ((i-1)*NT)/fs:1/fs:(i*NT-1)/fs; % k个周期Ak = A0*sin(2*pi*fr*t1)+1;h = exp(-C*t0).*sin(2*pi*fn*t0);x = [x,Ak .* h];
end
tt0 = 0:1/fs:((N/NT-k)*NT)/fs; % k个周期后剩下的采样时刻
tt1 = k*NT/fs:1/fs:(N-1)/fs;
x = [x,((A0*sin(2*pi*fr*tt1)+1).*exp(-C*tt0).*sin(2*pi*fn*tt0))];
x(1:NT) = 0; % 第一个单周期内的信号幅值为0
nt = wgn(1,N,-16); % 高斯白噪声
y = x + nt;
PSO_VMD.m:PSO优化VMD(非完整代码)
%% PSO优化VMD
load y; % y为含噪声信号
P_number = 30; % 粒子群个数
C1 = 2; % 初始化学习因子
C2 = 2;
W_max = 0.90; % 初始权重
W_min = 0.4; % 终止权重
iter = 20; % 迭代次数% 定义优化参数的取值范围:K取[3,10],Alpha取[100,2000]
Kmax = 10; % 定义优化参数的取值范围
Kmin = 3;
Alphamax = 2000;
Alphamin = 100;% 定义适应度函数
function f = Adaptness1(K,alpha,y)K=round(K);alpha=round(alpha);% VMD分解% x:为待分解的时域信号% u:分解模式的集合% u_hat:模式的频谱% omega:估计模式中心频率% K:分解的模态数% alpha:惩罚因子,也称平衡参数tau = 0; % 噪声容忍度DC = 0; % 无直流分量init = 1; % 初始化中心频率为均匀分布tol = 1e-7; % 收敛准则容忍度[u, ~, omega] = VMD(y, alpha, tau, K, DC, init, tol);
Best_VMD.m(非完整代码):利用VMD对含噪声信号进行分解,得到最优分量
%% 利用PSO优化VMD得到的最优参数,再进行VMD分解
load y; % y为含噪声信号
load bestK;
load bestAlpha;% VMD分解
% x:为待分解的时域信号
% u:分解模式的集合
% u_hat:模式的频谱
% omega:估计模式中心频率
% K:分解的模态数
% alpha:惩罚因子,也称平衡参数
tau = 0; % 噪声容忍度
DC = 0; % 无直流分量
init = 1; % 初始化中心频率为均匀分布
tol = 1e-7; % 收敛准则容忍度
[u, ~, omega] = VMD(y, bestAlpha, tau, bestK, DC, init, tol);
PSO_MCKD.m:PSO优化MCKD(非完整代码)
%% PSO优化MCKD
load X1; % 读取最优分量
y = X1;
P_number = 30; % 粒子群个数
C1 = 2; % 初始化学习因子
C2 = 2;
W_max = 0.90; % 初始权重
W_min = 0.4; % 终止权重
iter = 20; % 迭代次数% 定义优化参数的取值范围:L取[100,1000],T取[90,150]
Lmax = 1000; % 定义优化参数的取值范围
Lmin = 100;
Tmax = 142;
Tmin = 85;% 定义适应度函数
function Ad = Adaptness2(filterSize,T,y)filterSize = round(filterSize);T = round(T);termIter = 30;M = 3;plotMode = 0;[y_final, ~, ~] = MCKD(y,filterSize,termIter,T,M,plotMode);
Best_MKCD.m(非完整代码):利用MCKD对最优分量进行解卷积得到最终的信号 y_final
%% 利用PSO优化MCKD得到的最优参数,再进行MCKD分析
load X1; % 读取最优分量
load bestL;
load bestT;% MCKD:最大相关峭度解卷积
termIter = 30;
M = 3;
plotMode = 0;
[y_final, f_final, ckIter] = MCKD(X1,bestL,termIter,bestT,M,plotMode);
求信号的频谱和包络谱的函数
% 求信号的频谱
[f1,A] = PinPu(y,fs);% 求信号的包络谱
[f2,EnvA1] = Envelope(y,fs);
完整的MATLAB代码地址如下:
PSO_VMD_MCKD
参考文献
张俊, 张建群, 钟敏, 等. 基于PSO_VMD_MCKD方法的风机轴承微弱故障诊断[J]. 振动、测试与诊断, 2020,40(2):287-290.
【故障诊断】基于PSO_VMD_MCKD方法的风机轴承微弱故障诊断相关推荐
- 基于EEMD方法的降噪与解调在轴承故障诊断中的应用实证研究
基于EEMD方法的降噪与解调在轴承故障诊断中的应用实证研究 摘要 1 引言 2 EEMD简介 2.1 EMD简介 2.2 EEMD简介 3 基于阈值处理的EEMD降噪方法 3.1 相关系数 3.2 基 ...
- 基于DPCA的线性监督分类的故障诊断方法-T2和SPE统计量的计算
基于DPCA的线性监督分类的故障诊断方法 数据预处理 标签问题 归一化问题 剩余步骤同[PCA方法](https://blog.csdn.net/And_ZJ/article/details/9057 ...
- 【读期刊】基于卷积神经网络的方法对感应电动机进行故障诊断
Fault Diagnosis of Induction Motor Using Convolutional Neural Network 可能用到的专业名词 DAQ 数据采集设备 IN INVERT ...
- 2021-06-21基于深度学习的智能机械故障诊断的部分域适应方法阅读笔记
文章目录 基于深度学习的智能机械故障诊断的部分域适应方法 一.提出的方法 二.网络优化 1.源域监督损失 2.实验比较 总结 基于深度学习的智能机械故障诊断的部分域适应方法 无监督的目标域训练数据不会 ...
- 论文翻译-基于深度残差收缩网络的故障诊断 Deep Residual Shrinkage Networks for Fault Diagnosis
深度残差收缩网络是深度残差网络的一种改进,针对的是数据中含有噪声或冗余信息的情况,将软阈值化引入深度残差网络的内部,通过消除冗余特征,增强高层特征的判别性.以下对部分论文原文进行了翻译,仅以学习为目的 ...
- (全文翻译)基于深度残差收缩网络的故障诊断Deep Residual Shrinkage Networks for Fault Diagnosis
M. Zhao, S. Zhong, X. Fu, B. Tang, M. Pecht, Deep residual shrinkage networks for fault diagnosis, I ...
- 《Deep residual shrinkage networks for fault diagnosis》 基于深度残差收缩网络的故障诊断(翻译与python代码)
基于深度残差收缩网络的故障诊断(翻译) 赵明航,钟诗胜,付旭云,汤宝平,Michael Pecht 论文连接:https://ieeexplore.ieee.org/document/8850096 ...
- 基于深度残差收缩网络的故障诊断 Deep Residual Shrinkage Networks for Fault Diagnosis
深度残差收缩网络针对的是数据中含有噪声或冗余信息的情况,是深度残差网络的一种改进,将软阈值化引入深度残差网络的内部,通过消除冗余特征,增强高层特征的判别性.以下对部分论文原文进行了翻译,仅以学习为目的 ...
- 人工免疫算法c语言程序,基于人工免疫算法的模拟电路故障诊断
摘要: 模拟电路故障诊断一直以来都是十分必要和有意义的,目前已成为热门的研究课题.现代电子技术和计算机技术的迅速发展促进了片上系统和混合集成电路的大量涌现,这也对模拟电路的测试和故障诊断提出了更高的要 ...
最新文章
- 制度缺陷还是人性不堪
- java类验证和装载顺序_java类加载机制,你会了吗?
- ssl1377-竞赛真理【dp之分组背包】
- SaltStack源码分析之:master端执行salt模块大致流程
- (set)计算集合的并
- uva-465(overflow)
- 解决Vue报错:Uncaught (in promise) NavigationDuplicated: Avoided redundant navigation to current location
- eclipse工程运行正常但是工程有红叉的问题
- 95-080-046-源码-启动-flink-daemon.sh
- [转]Java游戏引擎
- 探索“云计算”的双重含义(节选)
- 计算机一级考证心得体会,计算机一级考试的心得体会
- atheros 9531 uboot spi flash 32m支持
- EOF是什么意思以及怎么输入
- 常见的两种解空间 全排列与幂集
- 七夕节给男朋友买什么礼物比较好呢?2022年七夕礼物推荐
- 安徽省美术作品版权登记技巧,申请了商标还要申请美术作品版权吗?
- java switch finally_java switch语句详解
- 543、RabbitMQ详细入门教程系列 -【Confirm与Mandatory】 2022.09.05
- windows程序设计读书笔记四