多尺度排列熵

article/2025/9/29 23:59:36

文章目录

  • 前言
  • 一、什么是多尺度排列熵?
  • 二、实验平台照片
  • 三、MATLAB代码
    • 3.1 多尺度排列熵
    • 3.2 排列熵
  • 参考文献


前言

齿轮及齿轮箱作为机械设备常用的调节转速和传递转矩的旋转机械设备,不仅能够传递较大的功率和载荷,而且具有较好的可靠性。但是在高精度的切削加工中,当齿轮在变转速、变载荷等复杂工况下工作,极易受到损伤、产生磨损、断齿等情况,使得加工精度大打折扣。因此,齿轮的状态监测和故障诊断变得尤为重要。


一、什么是多尺度排列熵?

排列熵是由 BANDT C 等提出的一种衡量一维时间序列复杂度的平均熵参数,常用来提取机械故障的特征。但齿轮及齿轮箱运转过程中的故障特征信息分布在多尺度中,仅用单一尺度的排列熵进行分析,会遗漏其余尺度上的故障特征信息。排列熵( Permutation Entropy,PE) 是一种度量时间序列复杂度和检测动力学突变的平均熵函数,算法简单,计算速度快。信号中由故障引起的高频冲击成分越多,排列熵值就越大。因此很多论文中引入排列熵指标作为评价不同滤波器长度滤波效果好坏的标准。
针对排列熵的不足,COSTA M 等提出了多尺度排列熵的概念。多尺度排列熵是在排列熵的基础上将时间序列进行多尺度粗粒化,然后计算不同尺度下粗粒化序列的排列熵,具体计算过程如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二、实验平台照片

为了验证本文所提方法的有效性,在实验平台下( 图2) ,采集试验台减速箱齿轮不同状态下的实时振动信号。齿轮减速箱型号为 JZQ200,采样频率为 8 200 Hz。选择齿轮正常、不平衡、松动、错位、断齿、裂痕这 6 种不同状态的数据进行实验验证。 在这里插入图片描述

三、MATLAB代码

3.1 多尺度排列熵

function [pe hist] = pec(y,m,t)%  Calculate the permutation entropy%  Input:   y: time series;
%           m: order of permuation entropy
%           t: delay time of permuation entropy, % Output: 
%           pe:    permuation entropy
%           hist:  the histogram for the order distributionly = length(y);
permlist = perms(1:m);
c(1:length(permlist))=0;for j=1:ly-t*(m-1)[a,iv]=sort(y(j:t:j+t*(m-1)));for jj=1:length(permlist)if (abs(permlist(jj,:)-iv))==0c(jj) = c(jj) + 1 ;endendendhist = c;c=c(find(c~=0));
p = c/sum(c);
pe = -sum(p .* log(p));
function outdata = PE( indata, delay, order, windowSize )
% @brief PE efficiently [1] computes values of permutation entropy [2] in 
% maximally overlapping sliding windows
%
% INPUT 
%   - indata - considered time series 
%   - delay - delay between points in ordinal patterns (delay = 1 means successive points)
%   - order - order of the ordinal patterns (order+1 - number of points in ordinal patterns)
%   - windowSize - size of sliding window
% OUTPUT 
%   - outdata - values of normalised permutation entropy as defined in [2]
%
% REFERENCES
% [1] Unakafova, V.A., Keller, K., 2013. Efficiently measuring complexity 
% on the basis of real-world data. Entropy, 15(10), 4392-4415.
% [2] Bandt C., Pompe B., 2002. Permutation entropy: a natural complexity 
% measure for time series. Physical review letters, APS
%
% @author Valentina Unakafova
% @date 10.11.2017
% @email UnakafovaValentina(at)gmail.comload( ['table' num2str( order ) '.mat'] ); % the precomputed tablepatternsTable = eval( ['table' num2str( order )] );    nPoints    = numel( indata );              % length of the time seriesopOrder1   = order + 1; orderDelay = order*delay; nPatterns  = factorial( opOrder1 );   % amount of ordinal patterns              patternsDistribution = zeros( 1, nPatterns ); % distribution of ordinal patternsoutdata = zeros( 1, nPoints );        % values of permutation entropy    inversionNumbers = zeros( 1, order ); % inversion numbers of ordinal pattern (i1,i2,...,id)prevOP = zeros( 1, delay );           % previous ordinal patterns for 1:opDelayordinalPatternsInWindow = zeros( 1, windowSize ); % ordinal patterns in the windowancNum = nPatterns./factorial( 2:opOrder1 );  % ancillary numbers       peTable( 1:windowSize ) = -( 1:windowSize ).*log( 1:windowSize  ); % table of precomputed values  peTable( 2:windowSize ) = ( peTable( 2:windowSize ) - peTable( 1:windowSize - 1 ) )./windowSize;       for iTau = 1:delay cnt = iTau; inversionNumbers( 1 ) = ( indata( orderDelay + iTau - delay ) >= indata( orderDelay + iTau ) );for j = 2:orderinversionNumbers( j ) = sum( indata( ( order - j )*delay + iTau ) >= ...indata( ( opOrder1 - j )*delay + iTau:delay:orderDelay + iTau ) );end        ordinalPatternsInWindow( cnt ) = sum( inversionNumbers.*ancNum ); % first ordinal patternspatternsDistribution( ordinalPatternsInWindow( cnt )+ 1 ) = ...patternsDistribution( ordinalPatternsInWindow( cnt ) + 1 ) + 1;  for j = orderDelay + delay + iTau:delay:windowSize + orderDelay   % loop for the first windowcnt = cnt + delay;                               posL = 1; % the position of the next pointfor i = j - orderDelay:delay:j - delayif( indata( i ) >= indata( j ) ) posL = posL + 1; endend  ordinalPatternsInWindow( cnt ) = ...patternsTable( ordinalPatternsInWindow( cnt - delay )*opOrder1 + posL );patternsDistribution( ordinalPatternsInWindow( cnt ) + 1 ) = ...patternsDistribution( ordinalPatternsInWindow( cnt ) + 1 ) + 1;            end  prevOP( iTau ) = ordinalPatternsInWindow( cnt );end    ordDistNorm = patternsDistribution/windowSize;tempSum = 0;for iPattern = 1:nPatternsif ( ordDistNorm( iPattern ) ~= 0 )tempSum = tempSum - ordDistNorm( iPattern )*log( ordDistNorm( iPattern ) );endendoutdata( windowSize + delay*order ) = tempSum;iTau = mod( windowSize, delay ) + 1;   % current shift 1:delaypatternPosition = 1;                   % position of the current pattern in the windowfor t = windowSize + delay*order + 1:nPoints % loop over all pointsposL = 1;                          % the position of the next pointfor j = t-orderDelay:delay:t-delayif( indata( j ) >= indata( t ) ) posL = posL + 1; endend                          nNew = patternsTable( prevOP( iTau )*opOrder1 + posL ); % incoming ordinal pattern         nOut = ordinalPatternsInWindow( patternPosition );      % outcoming ordinal pattern prevOP( iTau ) = nNew;ordinalPatternsInWindow( patternPosition ) = nNew; nNew = nNew + 1;nOut = nOut + 1;       if ( nNew ~= nOut ) % update the distribution of ordinal patterns    patternsDistribution( nNew ) = patternsDistribution( nNew ) + 1; % incoming ordinal patternpatternsDistribution( nOut ) = patternsDistribution( nOut ) - 1; % outcoming ordinal patternoutdata( t ) = outdata( t - 1 ) + ( peTable( patternsDistribution( nNew ) ) - ...peTable( patternsDistribution( nOut ) + 1  ) );elseoutdata( t ) = outdata( t - 1 );end      iTau = iTau + 1; patternPosition = patternPosition + 1;if ( iTau > delay ) iTau = 1; endif ( patternPosition > windowSize ) patternPosition = 1; endend outdata = outdata( windowSize + delay*order:end )/log( factorial( order + 1 ) );

3.2 排列熵

%% 主函数调用模糊熵函数求时间序列的模糊熵值
clc;clear;
close all;
tic;
% 产生仿真信号
fs=100;   %数据采样率Hz
t=1:1/fs:4096*1/fs; %对数据进行采样
n = length(t);  %数据的采样数?
f1 =0.25; %信号的频率f2=0.005;
x=2*sin(2*pi*f1*t+cos(2*pi*f2*t)); %?原始信号
nt=0.2*randn(1,n); %??噪声?成
y=x+nt; %含噪信号
% EEMD分解
Nstd=0.2;
NE=20;
X=eemd(y,Nstd,NE,100); % EEMD分解函数在本?的资源?可供下载
%%
% 相空间重构:eDim为嵌?维数
% 当X具有多列和多?时,每列将被视为独?的时间序列,该算法对X的每?列假设相同的嵌?维度和时间延迟,并以标量返回ESTDIM和ESTLAG。
[~,~,eDim] = phaseSpaceReconstruction(X');
% 求时间序列X的模糊熵,模糊熵的输?时间序列为?向量
X=X'; % 将信号y的各个分量转置
[m,n]=size(X);
r0=0.15; % r为相似容限度
Out_FuzEn=zeros(1,m);
for i=1:m
r=r0*std(X(i,:));
FuzEn(i) = FuzzyEntropy(X(i,:),eDim,r,2,1);
end
toc;
%% 模糊熵函数
function FuzEn = FuzzyEntropy(data,dim,r,n,tau)
%
% This function calculates fuzzy entropy (FuzEn) of a univariate signal data
%
% Inputs:
%
% data: univariate signal - a vector of size 1 x N (the number of sample points)
% dim: embedding dimension
% r: threshold (it is usually equal to 0.15 of the standard deviation of a signal - because we normalize signals to have a standard deviation of 1, here, r is usually equal to 0.15)
% n: fuzzy power (it is usually equal to 2)
% tau: time lag (it is usually equal to 1)
% 模糊熵算法的提出者:Chen Weiting,Wang Zhizhong,XieHongbo,et al. Characterization of surfaceEMG signal based on fuzzy entropy. IEEE Transactions on Neural Systems and Rehabilitation Engineering. 2007,15(2):266-272.
%
if nargin == 4, tau = 1; end
if nargin == 3, n = 2; tau=1; end
if tau > 1, data = downsample(data, tau); end
N = length(data);
result = zeros(1,2);
for m = dim:dim+1
count = zeros(N-m+1,1);
dataMat = zeros(N-m+1,m);
% 设置数据矩阵,构造成m维的?for i = 1:N-m+1
dataMat(i,:) = data(1,i:i+m-1);
end
%?距离计算相似模式数
for j = 1:N-m+1
% 计算切?雪夫距离,不包括?匹配情况
dataMat=dataMat-mean(dataMat,2);
tempmat=repmat(dataMat(j,:),N-m+1,1);
dist = max(abs(dataMat - tempmat),[],2);
D=exp(-(dist.^n)/r);
count(j) = (sum(D)-1)/(N-m);
end
result(m-dim+1) = sum(count)/(N-m+1);
end% 计算得到的模糊熵值
FuzEn = log(result(1)/result(2));
end%%
function [modos its]=eemd(x,Nstd,NR,MaxIter)
%--------------------------------------------------------------------------
%WARNING: this code needs to include in the same
%directoy the file emd.m developed by Rilling and Flandrin.
%This file is available at %http://perso.ens-lyon.fr/patrick.flandrin/emd.html
%We use the default stopping criterion.
%We use the last modification: 3.2007
% -------------------------------------------------------------------------
%  OUTPUT
%   modos: contain the obtained modes in a matrix with the rows being the modes
%   its: contain the iterations needed for each mode for each realization
%
%  INPUT
%  x: signal to decompose
%  Nstd: noise standard deviation
%  NR: number of realizations
%  MaxIter: maximum number of sifting iterations allowed.
% -------------------------------------------------------------------------
%   Syntax
%
%   modos=eemd(x,Nstd,NR,MaxIter)
%  [modos its]=eemd(x,Nstd,NR,MaxIter)
% -------------------------------------------------------------------------
%  NOTE:   if Nstd=0 and NR=1, the EMD decomposition is obtained.
% -------------------------------------------------------------------------
% EEMD was introduced in 
% Wu Z. and Huang N.
% "Ensemble Empirical Mode Decomposition: A noise-assisted data analysis method". 
% Advances in Adaptive Data Analysis. vol 1. pp 1-41, 2009.
%--------------------------------------------------------------------------
% The present EEMD implementation was used in
% M.E.TORRES, M.A. COLOMINAS, G. SCHLOTTHAUER, P. FLANDRIN,
%  "A complete Ensemble Empirical Mode decomposition with adaptive noise," 
%  IEEE Int. Conf. on Acoust., Speech and Signal Proc. ICASSP-11, pp. 4144-4147, Prague (CZ)
%
% in order to compare the performance of the new method CEEMDAN with the performance of the EEMD.
%
% -------------------------------------------------------------------------
% Date: June 06,2011
% Authors:  Torres ME, Colominas MA, Schlotthauer G, Flandrin P.
% For problems with the code, please contact the authors:   
% To:  macolominas(AT)bioingenieria.edu.ar 
% CC:  metorres(AT)santafe-conicet.gov.ar
% -------------------------------------------------------------------------
%  This version was run on Matlab 7.10.0 (R2010a)
%--------------------------------------------------------------------------desvio_estandar=std(x);
x=x/desvio_estandar;
xconruido=x+Nstd*randn(size(x));
[modos, o, it]=emd(xconruido,'MAXITERATIONS',MaxIter);
modos=modos/NR;
iter=it;
if NR>=2for i=2:NRxconruido=x+Nstd*randn(size(x));[temp, ort, it]=emd(xconruido,'MAXITERATIONS',MaxIter);temp=temp/NR;lit=length(it);[p liter]=size(iter);if lit<literit=[it zeros(1,liter-lit)];end;if liter<lititer=[iter zeros(p,lit-liter)];end;iter=[iter;it];[filas columnas]=size(temp);[alto ancho]=size(modos);diferencia=alto-filas;if filas>altomodos=[modos; zeros(abs(diferencia),ancho)];end;if alto>filastemp=[temp;zeros(abs(diferencia),ancho)];end;modos=modos+temp;end;
end;
its=iter;
modos=modos*desvio_estandar;
end

参考文献

[1]韩雪飞, 施展, 华云松. 基于参数优化MOMEDA与CEEMDAN的滚动轴承微弱故障特征提取研究[J]. 机械强度.


http://chatgpt.dhexx.cn/article/xk2cuVjP.shtml

相关文章

多尺度是什么计算机视觉中 multi_SCALE

先给出定义吓死你们哈哈 多尺度&#xff0c;实际上就是对信号的 不同粒度 的采样 别急哈哈 粒度小&#xff0c;说明是一个很密集的采样&#xff0c;能看到更多更多的细节 而粒度粗 大 说明是一个很稀疏的采样&#xff0c;但是点与点之间隔得远了&#xff0c;就容易看到趋势了…

多尺度(multi-scale)目标检测方法

文章目录 1、多尺度图像预测2、金字塔特征预测2.1 FPN2.2 SSD 3、bounding box设计 1、多尺度图像预测 将图片进行不同尺度的缩放&#xff0c;得到图像金字塔&#xff0c;然后对每层图片提取不同尺度的特征&#xff0c;得到特征图。最后对每个尺度的特征都进行单独的预测。 特…

多尺度与多分辨率的理解

我一开始以为 多尺度与多分辨率 是一样的意思。后来看到了xiaowei_cqu博客的一篇文章“【OpenCV】SIFT原理与源码分析&#xff1a;DoG尺度空间构造”(以下简称&#xff0c;xiaowei一文)&#xff0c;才发现我的理解有误。 尺度空间&#xff08;scale space&#xff09;理论 …

多尺度深度特征(上):多尺度特征学习才是目标检测精髓(干货满满,建议收藏)...

计算机视觉研究院专栏 作者&#xff1a;Edison_G 深度特征学习方案将重点从具有细节的具体特征转移到具有语义信息的抽象特征。它通过构建多尺度深度特征学习网络 (MDFN) 不仅考虑单个对象和局部上下文&#xff0c;还考虑它们之间的关系。 公众号ID&#xff5c;ComputerVisionG…

计算机视觉CV领域中多尺度特征的概念

知乎&#xff1a;深度学习中的多尺度模型设计 知乎&#xff1a;计算机视觉中的多尺度模型都有哪些设计&#xff1f; CSDN&#xff1a;多尺度理解 什么是多尺度&#xff1f; 所谓多尺度&#xff0c;实际就是对信号的不同粒度的采样。 通常在不同的尺度下我们可以观察到不同…

收藏吧 少年

程序员珍藏的东西会是什么&#xff1f;呵呵&#xff0c;除了平时写的代码&#xff0c;就是那些百看不厌的电子书了。 昨天很郁闷&#xff0c;我用了5年的移动硬盘&#xff0c;莫名奇妙的坏掉了。里面40G的资料全部报销了。 为了不再重蹈覆辙&#xff0c;我决定把重要的电子书…

一个程序员的多年珍藏--收藏

2010 - 01 - 15 [置顶] 一个程序员的多年珍藏(1月23日最新更新) 文章分类:Java编程 程序员珍藏的东西会是什么&#xff1f;呵呵&#xff0c;除了平时写的代码&#xff0c;就是那些百看不厌的电子书了。 昨天很郁闷&#xff0c;我用了5年的移动硬盘&#xff0c;莫名奇妙的坏掉了…

一个程序员多年的收藏

程序员珍藏的东西会是什么&#xff1f;呵呵&#xff0c;除了平时写的代码&#xff0c;就是那些百看不厌的电子书了。 昨天很郁闷&#xff0c;我用了5年的移动硬盘&#xff0c;莫名奇妙的坏掉了。里面40G的资料全部报销了。 为了不再重蹈覆辙&#xff0c;我决定把重要的电子书都…

转的一杂谈

网站架构&#xff08;页面静态化&#xff0c;图片服务器分离,负载均衡&#xff09;方案全解析 文章分类:综合技术 1、HTML静态化其实大家都知道&#xff0c;效率最高、消耗最小的就是纯静态化的html页面&#xff0c;所以我们尽可能使我们的网站上的页面采用静态页面来实现&…

PHP面试题(一)

1.用php打印前一天的时间&#xff0c;格式是2018-01-01 08:00&#xff1a;00? $adate("Y-m-d H:i:s",strtotime("-1 day"));print_r($a) 2.echo、print_r、print、var_dump的区别&#xff1f; echo、print是php语句&#xff0c;var_dump和print_r是函数…

Java高级必备

一、ES篇 1、概述 特点功能场景竞品分析对比 2、基本概念 IK分词器索引&#xff08;类数据库&#xff09;映射&#xff08;类表设计&#xff09;文档&#xff08;数据&#xff09; 3、高级特性 映射高级 地理坐标点数据类型动态映射 DSL高级聚合分析智能搜索 4、实战 写优化读优…

靠着这Java面试210题,成功拿下了10多家国内知名大厂Offer,10万字精华全部分享给大家

写在前面 我坚信,机会永远属于有准备的人,我们与其羡慕他人的成功,不如从此刻起,积累足够多的知识和面试经验,为将来进入更好的公司做好充分的准备! 如何让面试官在短短的几十分钟内认可你的能力? 如何在最短的时间内收获Java技术栈最核心的知识点 这份内容可以算是呕心沥血…

笔记总结备份

目录 文章目录 目录前言版本控制常用git 命令 操作系统系统机器数时间管理早期的 Linux 时间系统 中断内存管理内存分区malloc申请一块内存的背后原理RTOS 系统栈和协议栈寄存器磁盘调度算法虚拟内存页面置换算法分段段页式 Volatile&#xff08;可见性&#xff09;Atomic &…

MySQL常见面试题总结

MySQL常见面试题总结5---性能优化 单表优化设计字段索引查询SQL&#xff1a;充分利用索引&#xff0c;减少IO和全表扫描引擎事务锁定表使用外键Java方面 读写分离缓存批量读取和延迟修改分库分表垂直拆分水平拆分表分区 分库分表导致的问题事务一致性问题&#xff08;见分布式事…

Java并发编程实战_盖兹

文章目录 第一部分 基础知识第1章 简介1.1 并发简史1.2 线程的优势1.3 线程带来的风险1.4 线程无处不在(框架线程或类线程并发注意点) 第2章 线程安全性2.1 什么是线程安全性2.2 原子性2.3 加锁机制内置锁&#xff1a;Synchronized关键字可重入锁&#xff1a;获取锁的操作粒度是…

算法(上)

算法 文章目录 算法1. 数组1. 剑指Offer&#xff1a;数组旋转2. 剑指Offer&#xff1a;调整数组顺序使奇数位于偶数前面3. 剑指Offer&#xff1a; 顺时针打印矩阵4. 剑指Offer: 数组中出现次数超过一半的数字5. 剑指Offer&#xff1a;丑数6. 剑指Offer: 数组中的逆序对7. 剑指O…

面试八股知识总结

问题 序列化变量的声明和定义C语言宏中“#”和“##”区别C中extern "C" 的作用了解C中编译时的优化C的特点是什么C的异常处理机制C和C&#xff0c;java的区别C 11 nullptr 和 NULL#ifdef、#else、#endif和#ifndef的作用C 语言的关键字 static 和 C 的关键字static有什…

数据结构学习笔记(参考书籍:大话数据结构和CSDN)

有些解释内容为搬运&#xff0c;如有侵权&#xff0c;联系删除&#xff01;&#xff01;&#xff01; 数据结构 线性表 顺序存储 优点&#xff1a;无须为表中元素之间的逻辑关系而增加额外的存储空间&#xff1b;可以快速的存取表中任一位置的元素。 缺点&#xff1a;插入…

常用汉字5000个(按拼音)

2019独角兽企业重金招聘Python工程师标准>>> 阿,啊,哀,唉,挨,矮,爱,碍,安,岸,按,案,暗,昂,袄,傲,奥,八,巴,扒, 吧,疤,拔,把,坝,爸,罢,霸,白,百,柏,摆,败,拜,班,般,斑,搬,板,版, 吧,疤,拔,把,坝,爸,罢,霸,白,百,柏,摆,败,拜,班,般,斑,搬,板,版, 办,半,伴,扮,拌,瓣,帮…

3500常用汉字书法体检测数据集

毛笔字数据集已收集 草书30044楷书12900行书29465隶书14001篆书9386 数据集有gif格式和jpg格式&#xff0c;白底黑字&#xff0c;支持向量机可训练 样例展示&#xff0c;一共4.5万张 关注微信公众号&#xff1a;酷尔编程&#xff0c;领取