【故障诊断】用于轴承故障诊断的性能增强时变形态滤波方法及用于轴承断层特征提取的增强数学形态算子研究(Matlab代码实现)
💥 💥 💞 💞 欢迎来到本博客 ❤️ ❤️ 💥 💥
🏆 博主优势: 🌞 🌞 🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。
⛳ 座右铭:行百里者,半于九十。
📋 📋 📋 本文目录如下: 🎁 🎁 🎁
目录
💥1 概述
📚2 运行结果
🎉3 参考文献
🌈4 Matlab代码实现
💥1 概述
形态学滤波是从集合论推导出的典型非线性信号处理方法。在这种方法中,可以通过与指定的结构元件(SE)相互作用来挖掘信号中的脉冲特征。SE的参数(即形状、高度和长度)选择对形态过滤结果有重要影响。针对该问题,该文提出一种自适应时变形态滤波(ATVMF)方法。ATVMF可以根据待分析信号的固有特性自适应地确定SE的形状和尺度,有效提高瞬态特征提取能力和计算效率。此外,还提出了广义形态产物算子(GMPO)的定义,可以构造新的形态积算子进行特征提取。
📚2 运行结果




部分代码:
function [ y ] = ATVMF( x, interp_method, operator )
% Algorithm name: Adaptive Time-Varying Morphological Filtering (ATVMF)
%
% Algorithm description: This method can achieve adaptive morphological filtering,
% in which a time-varying structure element (TVSE) is adaptively designed
% based on the characteristics of a signal and is no longer fixed.
%
% Input:
% x: signal to be analyzed (a vector)
% interp_method: selected interpllation method, such as 'spline', 'pchip',
% 'linear' and 'nearest', in which 'spline' is recommended.
% 'spline' -- cubic spline interpolation
% 'pchip' -- cubic Hermitian interpolation
% 'linear' -- piecewise linear interpolation
% 'nearest' -- nearest neighbor interpolation
% operator: selected morphological operator, see sub-function 'MF_operator'
%
% Output:
% y: morphological filtered signal
x = x(:)-mean(x); % a vector
N = length(x);
[indmin, indmax] = extreme_points(x); % Determine the location of local minima and maxima
% indmin -- the position of the local minimum point in the sequence x
% indmax -- the position of the local maximum point in the sequence x
tmin = indmin;
tmax = indmax;
xmin = x(tmin); % The magnitude of the local minimum point
xmax = x(tmax); % The magnitude of the local maximum point
% Sorting of local minimum and maximum points
textra = zeros(1,length(tmin)+length(tmax));
xextra = zeros(1,length(xmin)+length(xmax));
if tmin(1) < tmax(1) % The first extreme point is the minimum point
if tmin(end) > tmax(end) % The last extreme point is the minimum point
textra(1) = tmin(1);
xextra(1) = xmin(1);
for i = 1:length(tmax)
textra(2*i) = tmax(i);
textra(2*i+1) = tmin(i+1);
xextra(2*i) = xmax(i);
xextra(2*i+1) = xmin(i+1);
end
else % The last extreme point is the maximum point
for i = 1:length(tmax)
textra(2*i-1) = tmin(i);
textra(2*i) = tmax(i);
xextra(2*i-1) = xmin(i);
xextra(2*i) = xmax(i);
end
end
else % The first extreme point is the maximum point
if tmin(end) < tmax(end) % The last extreme point is the maximum point
textra(1) = tmax(1);
xextra(1) = xmax(1);
for i = 1:length(tmin)
textra(2*i) = tmin(i);
textra(2*i+1) = tmax(i+1);
xextra(2*i) = xmin(i);
xextra(2*i+1) = xmax(i+1);
end
else % The last extreme point is the minimum point
for i = 1:length(tmin)
textra(2*i-1) = tmax(i);
textra(2*i) = tmin(i);
xextra(2*i-1) = xmax(i);
xextra(2*i) = xmin(i);
end
end
end
% Selection of 'interp_method'
env = interp1(textra,xextra,textra(1):textra(end),interp_method);
delta = textra(1)-1;
S = length(indmin)-1; % number of SE
y = []; % output initialization
for s = 1:S
xnew = x(indmin(s)+1:indmin(s+1));
g = env(indmin(s)+1-delta:indmin(s+1)-delta);
g = g-min(g);
% the morphological filtering result
ynew = MF_operator( xnew, g, operator );
y = [y; ynew];
end
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% sub-function
function d = dilation(f,g)
% Morphological dilation operation
N = length(f);
M = length(g);
dtmp = f;
for i = 1:N
for j = 1:M
if (i-j) >= 1 && (i-j) <= N
tmp = f(i-j) + g(j);
if tmp > dtmp(i)
dtmp(i) = tmp;
end
end
end
end
d = dtmp;
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% sub-function
function e = erosion(f,g)
% Morphological erosion operation
N = length(f);
M = length(g);
dtmp = f;
for i = 1:N
for j = 1:M
if (i+j) >= 1 && (i+j) <= N
tmp = f(i+j) - g(j);
if tmp < dtmp(i)
dtmp(i) = tmp;
end
end
end
end
e = dtmp;
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% sub-function
function y = MF_operator( x, g, operator )
% Morphological operators
%
a1 = dilation(x,g); % dilation
a2 = erosion(a1,g); % closing
a3 = erosion(a2,g);
a4 = dilation(a3,g); % closing-opening
%
b1 = erosion(x,g); % erosion
b2 = dilation(b1,g); % opening
b3 = dilation(b2,g);
b4 = erosion(b3,g); % opening-closing
if strcmp(operator,'Gde') == 1
y = a1-b1;
elseif strcmp(operator,'Gco') == 1
y = a2-b2;
elseif strcmp(operator,'Gcooc') == 1
y = a4-b4;
elseif strcmp(operator,'AHde') == 1
y = x-(a1+b1)/2;
elseif strcmp(operator,'AHco') == 1
y = x-(a2+b2)/2;
elseif strcmp(operator,'AHcooc') == 1
y = x-(a4+b4)/2;
elseif strcmp(operator,'MGPO1') == 1
y = (a1-b1).*(a2-b2);
elseif strcmp(operator,'MGPO2') == 1
y = (a1-b1).*(a4-b4);
elseif strcmp(operator,'MGPO3') == 1
🎉3 参考文献
部分理论来源于网络,如有侵权请联系删除。
[1]陈斌, 宋大鹏, 张伟, 程彦, 王志, 一种用于轴承故障诊断的性能增强时变形态滤波方法, 测量学报 (2021) 109163.
[2]陈斌, 程彦, 张文, 梅国, 用于轴承断层特征提取的增强数学形态算子研究, ISA Trans. (2021)
[3]B. Chen, D. Song, W. Zhang, Y. Cheng, Z. Wang, A performance enhanced time-varying morphological filtering method for bearing fault diagnosis, Meas. J. Int. Meas. Confed. 176 (2021) 109163.
[4]B. Chen, Y. Cheng, W. Zhang, G. Mei, Investigation on enhanced mathematical morphological operators for bearing fault feature extraction, ISA Trans. (2021). https://doi.org/10.1016/j.isatra.2021.07.027.
🌈4 Matlab代码实现
相关文章:

【故障诊断】用于轴承故障诊断的性能增强时变形态滤波方法及用于轴承断层特征提取的增强数学形态算子研究(Matlab代码实现)
💥 💥 💞 💞 欢迎来到本博客 ❤️ ❤️ 💥 💥 🏆 博主优势: 🌞 🌞 🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 …...

水羊转债,超达转债,晓鸣转债上市价格预测
水羊转债 基本信息 转债名称:水羊转债,评级:A,发行规模:6.94987亿元。 正股名称:水羊股份,今日收盘价:13.94元,转股价格:13.71元。 当前转股价值 转债面值 /…...

从数据管理到数据资产管理
数据已经与土地、劳动力、资本、技术并称为五种生产要素,数据的价值是毋庸置疑的。数据甚至成为了国家的基础性战略资源,数字经济也正在成为经济增长的强大创新动力。那么—— 数据到底指的是什么? 数据管理又是怎么回事? 数据如何…...

RabbitMQ【#1】是什么,有什么用
RabbiMQ是什么? RabbitMQ是一种开源的消息队列软件,它实现了高级消息队列协议(AMQP)并支持多种编程语言。它可以用于将消息从一个应用程序传递到另一个应用程序或进程,并支持分布式系统中的异步消息通信。RabbitMQ的主…...

RabbitMQ防止消息丢失
生产者没有成功把消息发送到MQ 丢失的原因 :因为网络传输的不稳定性,当生产者在向MQ发送消息的过程中,MQ没有成功接收到消息,但是生产者却以为MQ成功接收到了消息,不会再次重复发送该消息,从而导致消息的丢…...
ImageJ用户手册——第二部分(ImageJ操作)
ImageJ用户手册-第二部分 ImageJ的使用4. 使用键盘快捷键5. 查找命令6. 撤消和重做7. 图像类型和格式原生格式非原生格式 8. 堆栈、虚拟堆栈、超堆栈Stacks(堆栈)Virtual Stacks(虚拟堆栈)Hyperstacks(超堆栈ÿ…...

Java中Lambda表达式(面向初学者)
目录 一、Lambda表达式是什么?什么场景下使用Lambda? 1.Lambda 表达式是什么 2.函数式接口是什么 第二章、怎么用Lambda 1.必须有一个函数式接口 2.省略规则 3.Lambda经常用来和匿名内部类比较 第三章、具体使用场景举例() …...

2023年淮阴工学院五年一贯制专转本数字电子技术考试大纲
2023年淮阴工学院五年一贯制专转本数字电子技术考试大纲 一、考核对象 本课程的考核对象是五年一贯制高职专转本电子科学与技术专业普通在校生考生。 二、考试目的及总体要求 通过本课程的考试,检查学生对掌握数字电路的基础理论知识的掌握程度,是否…...
使用 GO 编写 Web 应用:学习如何使用 GO 语言编写 Web 应用,包括使用 HTTP 路由、模板引擎等。
GO 语言是一个高效、可靠和简洁的编程语言,越来越多的开发者开始选择 GO 语言来编写 Web 应用。本文将介绍如何使用 GO 语言编写 Web 应用,并且将重点关注使用 HTTP 路由和模板引擎。 使用 HTTP 路由 HTTP 路由是 Web 应用中非常重要的一个概念。它可以帮助我们将请求路由到…...

Leetcode-day4【88】【167】【125】【345】
文章目录 88. 合并两个有序数组题目解题思路解题思路【学习】尾插入法 167. 两数之和 II - 输入有序数组题目解题思路 125. 验证回文串题目解题思路 345. 反转字符串中的元音字母题目解题思路 88. 合并两个有序数组 题目 给你两个按 非递减顺序 排列的整数数组 nums1 和 nums…...

【IoT】如何使用软件加密(文件夹加密工具.exe),并破解工具
目录 第一步:显示隐藏的文件。 第二步:将隐藏文件变成文件夹。 第三步:解密文件。 有时候出差或者有些商务场合,需要对一些敏感文件做一下简单的加密,这样在分享内容的时候,可以起到初步的保护作用。 当…...

Spring Boot——优雅的参数校验
🎈 概述 当我们想提供可靠的 API 接口,对参数的校验,以保证最终数据入库的正确性,是 必不可少 的活。比如下图就是 我们一个项目里 新增一个菜单校验 参数的函数,写了一大堆的 if else 进行校验,或者基础校…...

【c语言】typedef的基本用法 | 定义格式
创作不易,本篇文章如果帮助到了你,还请点赞支持一下♡>𖥦<)!! 主页专栏有更多知识,如有疑问欢迎大家指正讨论,共同进步! 给大家跳段街舞感谢支持!ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ…...

深度学习论文分享(二)Data-driven Feature Tracking for Event Cameras
深度学习论文分享(二)Data-driven Feature Tracking for Event Cameras(CVPR2023) 前言Abstract1. Introduction2. Related Work3. Method3.1. Feature Network3.2. Frame Attention Module3.3. Supervision 4. Experiments5. Con…...

蛇优化算法
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 蛇优化算法算法流程图初始化进化操作搜索阶段(无食物)——全局搜索搜索阶段(有食物)——局部搜索战斗模式交配模式 备…...

循环神经网络(RNN)简单介绍—包括TF和PyTorch源码,并给出详细注释
文章目录 循环神经网络(RNN)入门教程1. 循环神经网络的原理2. 循环神经网络的应用3. 使用keras框架实现循环神经网络3.1导入对应的库及加载数据集3.2.数据预处理3.3定义RNN模型3.4训练模型3.5测试模型 4.使用PyTorch框架实现上述功能—注释详细5.结论 循…...
Struts2 快速入门
Struts2 是一个基于 MVC 设计模式的 Java Web 应用程序框架,它可以帮助我们更加有效地开发 Web 应用程序。Struts2 采用了前端控制器模式,通过核心控制器 DispatchServlet 将所有请求进行集中处理,然后将请求分发到指定的 Action 中ÿ…...
关于PullToRefreshView下拉刷新失效问题
一、问题原因 昨天,突然一个问题丢在了我的头上,用户反馈说某某界面下拉刷新不好使啊,怎么回事。二话不说直接运行项目,经过测试,发现果然不好使。一看代码提交日期好家伙2020年,百思不得其解,…...
JAVA开发中的六大原则
JAVA开发中的六大原则,也被称为SOLID原则,是软件开发中常用的一组设计原则。这些原则提供了实现高质量、易于维护和可扩展软件的基本策略。 以下是JAVA开发中的六大原则以及它们的详细说明: 单一职责原则(Single Responsibility…...
Matplotlib 安装
Matplotlib 安装 本章节,我们使用 pip 工具来安装 Matplotlib 库,如果还未安装该工具,可以参考python 怎么使用pip进行包管理。 安装 matplotlib 库: pip install matplotlib 安装完成后,我们就可以通过 import 来…...

C++_核心编程_多态案例二-制作饮品
#include <iostream> #include <string> using namespace std;/*制作饮品的大致流程为:煮水 - 冲泡 - 倒入杯中 - 加入辅料 利用多态技术实现本案例,提供抽象制作饮品基类,提供子类制作咖啡和茶叶*//*基类*/ class AbstractDr…...

iOS 26 携众系统重磅更新,但“苹果智能”仍与国行无缘
美国西海岸的夏天,再次被苹果点燃。一年一度的全球开发者大会 WWDC25 如期而至,这不仅是开发者的盛宴,更是全球数亿苹果用户翘首以盼的科技春晚。今年,苹果依旧为我们带来了全家桶式的系统更新,包括 iOS 26、iPadOS 26…...

Unity3D中Gfx.WaitForPresent优化方案
前言 在Unity中,Gfx.WaitForPresent占用CPU过高通常表示主线程在等待GPU完成渲染(即CPU被阻塞),这表明存在GPU瓶颈或垂直同步/帧率设置问题。以下是系统的优化方案: 对惹,这里有一个游戏开发交流小组&…...

Linux相关概念和易错知识点(42)(TCP的连接管理、可靠性、面临复杂网络的处理)
目录 1.TCP的连接管理机制(1)三次握手①握手过程②对握手过程的理解 (2)四次挥手(3)握手和挥手的触发(4)状态切换①挥手过程中状态的切换②握手过程中状态的切换 2.TCP的可靠性&…...
【碎碎念】宝可梦 Mesh GO : 基于MESH网络的口袋妖怪 宝可梦GO游戏自组网系统
目录 游戏说明《宝可梦 Mesh GO》 —— 局域宝可梦探索Pokmon GO 类游戏核心理念应用场景Mesh 特性 宝可梦玩法融合设计游戏构想要素1. 地图探索(基于物理空间 广播范围)2. 野生宝可梦生成与广播3. 对战系统4. 道具与通信5. 延伸玩法 安全性设计 技术选…...

基于TurtleBot3在Gazebo地图实现机器人远程控制
1. TurtleBot3环境配置 # 下载TurtleBot3核心包 mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src git clone -b noetic-devel https://github.com/ROBOTIS-GIT/turtlebot3.git git clone -b noetic https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git git clone -b noetic-dev…...

嵌入式学习笔记DAY33(网络编程——TCP)
一、网络架构 C/S (client/server 客户端/服务器):由客户端和服务器端两个部分组成。客户端通常是用户使用的应用程序,负责提供用户界面和交互逻辑 ,接收用户输入,向服务器发送请求,并展示服务…...

【分享】推荐一些办公小工具
1、PDF 在线转换 https://smallpdf.com/cn/pdf-tools 推荐理由:大部分的转换软件需要收费,要么功能不齐全,而开会员又用不了几次浪费钱,借用别人的又不安全。 这个网站它不需要登录或下载安装。而且提供的免费功能就能满足日常…...

推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材)
推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材) 这个项目能干嘛? 使用 gemini 2.0 的 api 和 google 其他的 api 来做衍生处理 简化和优化了文生图和图生图的行为(我的最主要) 并且有一些目标检测和切割(我用不到) 视频和 imagefx 因为没 a…...

【JVM】Java虚拟机(二)——垃圾回收
目录 一、如何判断对象可以回收 (一)引用计数法 (二)可达性分析算法 二、垃圾回收算法 (一)标记清除 (二)标记整理 (三)复制 (四ÿ…...