改进的麻雀算法优化最大相关峭度解卷积(SCSSA-MCKD),实现早期微弱故障诊断,MATLAB代码实现

01 引言

由于一些设备的早期故障产生的冲击十分微弱,易被系统噪声干扰,如何有效地对设备的原始故障信号进行降噪并增强信号中微弱冲击成分,是进行该类部件早期故障诊断的关键。

最大相关峭度解卷积(MCKD)通过解卷积运算突出被噪声淹没的连续冲击脉冲,提高原始信号的相关峭度值,非常适用于提取微弱故障信号的连续瞬态冲击。已有很多文献证明MCKD可以用于早期微弱故障诊断。

02 流程介绍

本篇文章的思路大家可以参考这篇文献,这篇文献的被引量和下载次数都是相当高的:张俊,张建群,钟敏等.基于PSO-VMD-MCKD方法的风机轴承微弱故障诊断[J].振动.测试与诊断,2020,40(02):287-296+418.DOI:10.16450/j.cnki.issn.1004-6801.2020.02.011.

流程介绍:

①模拟早期故障信号,并添加强烈的高斯白噪声来模拟实际工况设备被环境噪声所覆盖的微弱故障;

②找最佳IMF分量:采用VMD或者EMD等方式对故障模拟信号分解,计算各IMF分量的包络谱峰值因子,包络谱峰值因子最大的IMF分量即为最佳IMF分量;

③采用对最大相关峭度解卷积(MCKD)的三个参数进行寻优,得到增强的IMF分量;

 

④对IMF分量进行包络谱分析,得到故障特征频率。

03 结果分析

  • ①模拟早期微弱故障信号

信号的原理公式:

af06396d61e751c7ef58f97271e66ac5.png

dbecd22e5138e5614163661b8fd22602.png

信号结果图:

(1)冲击信号,该信号是不加高斯白噪声之前的冲击信号。

1130b6cdf4ee12e1f96a4b1263d944be.png

(2)故障模拟信号,该信号是加高斯白噪声之后的冲击信号,可以看到,周期冲击信号则完全被噪声淹没。

687acd4632c44d6cef07e0aec2d617b8.png

(3)故障模拟信号的包络谱,从这个图中难以发现突出频率,无法辨别故障特征。

c553895cdaf8ca0e3809945b3529293c.png

  • ②找最佳IMF分量

采用VMD对故障信号进行分解,得到若干个IMF分量,然后计算IMF分量的包络谱峰值因子,包络谱峰值因子最大的IMF分量即为最佳IMF分量;

将VMD模态分解数设置为K = 10,这个数字是根据经验自己设置的。(大家如果想通过优化VMD参数的方式得到模态分解数K也是可以的,可以看之前发的有关优化VMD参数的文章,这篇文章就不再讲解优化VMD了)

得到各IMF分量的包络谱峰值因子图如下:

3383dbbe4854c084b3db3fda945886d2.png

可以看到最佳的IMF分量是IMF7。然后接下来的操作都是对这个IMF7展开的。

对IMF7进行包络谱分析,

77cd58bb9f1a4f8cc17f7aa3726921d1.png

想获得更多VMD相关分析的可以看这篇文章:VMD分解,matlab代码,包络线,包络谱,中心频率,峭度值,能量熵,样本熵,模糊熵,排列熵,多尺度排列熵,西储大学数据集为例

③改进的麻雀算法优化MCKD参数

原文献中只对MCKD的[L,T]两个参数进行了优化,作者在这里进行了改进,对[L,T,M]三个参数进行了优化,以确保找到最佳的MCKD参数。

适应度函数依旧选择包络谱峰值因子。改进的麻雀算法优化MCKD适应度曲线如下。

41743c14814ed91850d9a16d321da95a.png

处理过程如下:

8a347b188f6e94a7d3d58fc58b80c2fb.png

得到的最佳参数分别是[L,T,M] = [242,99,1];

MCKD处理后的包络谱如下:

be9a376a53c02421d17224301b2f551e.png

可以看到,与优化前的IMF分量包络谱比较,得到了明显的增强。解卷积后的包络谱中故障特征频率fi 及其2倍频、3倍频、4倍频的谱线均清晰可见,表明特征频率被准确提取。

04代码

%% 
clear
clc  
close all
fobj=@mckdcost;       %包络谱峰值因子
%% 选取数据
load data.mat  %注意这里替换为自己的数据即可,数据形式为n行*1列,列数必须为1。
data = best_imf;
%% 设置参数
lb = [100 85 1];    %mckd下限
ub = [1000 142 7];  %mckd上限
dim = 3;            % 优化变量数目
Max_iter=20;       % 最大迭代数目
SearchAgents_no=20;       %种群规模
fs = 12800;   %采样频率
%% 调用SCSSA函数
[fMin , bestX, Convergence_curve ] = SCSSA(SearchAgents_no,Max_iter,lb,ub,dim,fobj,data,fs);


%% 画适应度函数曲线图,并输出最佳参数
figure
plot(-Convergence_curve,'Color',[0.9 0.5 0.1],'Marker','>','LineStyle','--','linewidth',1);


title('Objective space')
xlabel('Iteration');
ylabel('Best score obtained so far');
legend('SCSSA优化MCKD')
display(['The best solution obtained by SCSSA is : ', num2str(fix(bestX))]);  %输出最佳位置
display(['The best optimal value of the objective funciton found by SCSSA is : ', num2str(-fMin)]);  %输出最佳适应度值


%% 将最佳的MCKD参数回带,求出结果


filterSize = fix(bestX(1));
termIter = 30;
T = fix(bestX(2));
M = fix(bestX(3));
plotMode = 0;
%--------------- Run actual mckd code:数据进行mckd分解---------------------------
[y_final,~,~] = mckd(data,filterSize,termIter,T,M,plotMode);

代码目录如下:

ae97bfb60536c83796c4f50bde1eaee1.png

运行时,先运行Simulate_impact_signal.m可以生成一个故障模拟信号,然后运行main.m即可。

05代码获取

   完整代码获取,点击下方卡片回复关键词:

MCKD

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/68290.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

logstash日志换行处理小解

logstash主用于日志实时数据收集、解析,并将数据转发的工具,内置的功能也相当强大。但,同时意味着,他可能接收到各种情况的数据。 此处,我们主要讲解我实际使用中,碰到的一个小问题,换行(\n)。…

Zabbix监控系统详解及配置

前言 作为一个运维,需要会使用监控系统查看服务器状态以及网站流量指标,利用监控系统的数据去了解上线发布的结果,和网站的健康状态。利用一个优秀的监控软件,我们可以: 通过一个友好的界面进行浏览整个网站所有的服务…

JavaScript应用:五子棋游戏实战开发

🏆作者简介,黑夜开发者,全栈领域新星创作者✌,CSDN博客专家,阿里云社区专家博主,2023年6月csdn上海赛道top4。 🏆数年电商行业从业经验,历任核心研发工程师,项目技术负责…

MChat-Gpt V1.0.0 (将ChatGpt机器人接入内网供全体使用)

Github>https://github.com/MartinxMax/MChat-Gpt 首页 MChat-Gpt V1.0.0将ChatGpt机器人接入内网供全体使用 你需要一个ChatGpt账户如果您在中国则需要使用代理访问,设置TUN代理模式 安装依赖 选择你的系统进行安装 服务端配置 #python3 ChatGpt_Server.py -h 使用&a…

汉字形近字(OCR)

近期做中文OCR识别的优化,抓破头皮却收获甚微。 为了百尺竿头更进一步,遂将目光聚焦在中文汉字特有的形近字和生僻字问题上,于是怒发整理形近字大全(花了不少刀),希望对同行朋友们也有帮助: 地表…

【BMC】OpenBMC开发基础3:引入新的开源配方

引入新的开源配方 前面介绍了如何在OpenBMC中通过新建配方引入自己的程序,也介绍了如何修改原有的程序,下面要介绍的是如何引入开源的新程序,这在OE系统上是很方便的,重点就在于引入新的配方。 OE为了方便开发者使用&#xff0c…

【如何在Linux环境下进入Docker容器中的MySQL】

如何在Linux环境下进入Docker容器中的MySQL 查看所有容器 docker ps进入容器 docker exce -it {NAMES/CONTAINER ID} bash根据容器别名获取容器ID都可以进入到容器当中 3. 输入MySQL的账号和密码登录MySQL mysql -uroot -p{password}

竞赛项目 深度学习的视频多目标跟踪实现

文章目录 1 前言2 先上成果3 多目标跟踪的两种方法3.1 方法13.2 方法2 4 Tracking By Detecting的跟踪过程4.1 存在的问题4.2 基于轨迹预测的跟踪方式 5 训练代码6 最后 1 前言 🔥 优质竞赛项目系列,今天要分享的是 基于深度学习的视频多目标跟踪实现 …

HTTP代理授权方式介绍

在网络爬虫过程中,我们经常需要使用HTTP代理来实现IP隐藏、突破限制或提高抓取效率。而为了确保代理的正常使用,并避免被滥用,代理服务商通常会采用授权方式。在本文中,我们将介绍几种常见的HTTP代理授权方式,以帮助你…

Goland报错 : Try to open it externally to fix format problem

这句报错的意思也就是 : 尝试在外部打开以解决格式问题 解决方案 : 将图片格式该为.png格式,再粘贴进去就可以了! 改变之后的效果 : 那么,这样就ok了

服务器数据恢复-断电导致ext4文件系统文件丢失的数据恢复案例

服务器数据恢复环境: 一台服务器挂载一台存储设备,存储中划分一个Lun;服务器操作系统是Linux centos,EXT4文件系统。 服务器故障&分析: 意外断电导致服务器操作系统无法启动,系统在修复后可以正常启动&…

计算机网络(7) --- UDP协议和TCP协议

计算机网络(6) --- https协议_哈里沃克的博客-CSDN博客https协议https://blog.csdn.net/m0_63488627/article/details/132112683?spm1001.2014.3001.5501 目录 1.补充知识 1.PORT端口号 2.端口号范围划分 3.知名端口号 2.UDP协议 1.UDP报头 2.U…

【算法】逆波兰表达式

文章目录 定义求法代码思想: 定义 逆波兰表达式也称为“后缀表达式”,是将运算符写在操作数之后的运算式。 求法 *如:(ab)c-(ab)/e的转换过程: 先加上所有的括号。 (((ab)*c)-((ab)/e))将所有的运算符移到括号外面 (((ab) c)* …

WordPress博客发布到公网可访问【 windows系统及linux系统操作】

文章目录 1. 免费注册并下载安装cpolar内网穿透1.1 windows系统1.2 linux系统 2. 将内网映射到公网3. 获取所映射的公网地址 要将自己搭建的个人WordPress博客网站发布到公网可访问,比较常规的做法是买服务器、域名,将其部署到服务器上,备案发…

【腾讯云 Cloud Studio 实战训练营】深度体验 | 使用腾讯云 Cloud Studio 快速构建 Vue + Vite 完成律师 H5 页面

【腾讯云 Cloud Studio 实战训练营】深度体验 | 使用腾讯云 Cloud Studio 快速构建 Vue Vite 完成律师 H5 页面 写在前面的话一、腾讯云 Cloud Studio 介绍1.1 Cloud Studio 应用场景1.2 Cloud Studio 开发优势 二、沉浸式体验开发快速构建 H5 页面2.1 注册与登录 Cloud Studi…

协程(一)单机--》并发--》协程

目录 一 协程的概述1.1 并行与并发1.2 线程1.3 新的思路1.4 Goroutine 二 第一个入门程序 一 协程的概述 我查看了网上的一些协程的资料,发现每个人对协程的概念都不一样,但是我认可的一种说法是:协程就是一种轻量级的线程框架(K…

【C语言学习】条件运算符、逻辑运算、运算符优先级

一、条件运算符 条件?条件满足时的值:条件不满足时的值 count (count>20)?count-10:count10;等同于 if( count>20 )count count-10; elsecount count10; 优先级 条件运算符的优先级高于赋值运算符,但低于其他运算符。 尽量不要…

【图像恢复】基于交替乘子方法(ADMM)图像恢复算法研究[固定点收敛和应用](Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

Linux系统性能调优及调试课:Linux Kernel Printk

🚀返回专栏总目录 文章目录 0、printk 说明1、printk 日志等级设置2、屏蔽等级日志控制机制3、printk打印常用方式4、printk打印格式0、printk 说明 在开发Linux device Driver或者跟踪调试内核行为的时候经常要通过Log API来trace整个过程,Kernel API printk()是整个Kern…

layui 集成 ztree异步加载

首先&#xff0c;layui环境搭建&#xff0c;ztree环境引入 ztree的js和css都要引入&#xff0c;我这里暂时用的是core包> 静态&#xff0c;一句话就够了 <!-- 左侧菜单树形组件 --><div class"layui-col-md3"><div class"layui-footer "…