Hilbert-Huang变换

Hilbert-Huang变换可以高内聚信号特征自适应的将信号分解成若干固有模态函数。更适用于非线性非平稳信号的处理

缺点:

1、存在端点延拓;

2、分解判据确定;

3、Hilbert解调固有局限性。

一、介绍

Hilbert-Huang变换是经验模态分解(EMD)和Hilbert时频谱的统称。

步骤:

1、将信号用EMD分解为若干固有模态函数(IMF);

2、对每个IMF分量进行Hilbert变换得到瞬时频率和瞬时幅值;

3、得到信号的时频分布。

1.1 固有模态函数(IMF)

IMF必须满足条件:

(1)曲线的极值点和零点的数目相等或至多相差1;

(2)在曲线的任意一点,包络的最大极值点和最小极值点的均值等于0。

1.2 EMD原理

瞬时频率

瞬时频率对多数信号不适用。

由于大多数非平稳信号不直接满足IMF条件,Huang提出了假设:任何复杂信号都是由一些相互独立的IMF分量组成;每个IMF分量可以是线性的,也可以是非线性的。

EMD过程:

(1)确定信号所有的局部极大值和极小值点;

(2)用三次样条函数对所有极大值点和极小值点分别进行插值运算,拟合出上下包络并求出平均值m1,计算

(3)如果h1是IMF,则h1是函数x(t)的第1个IMF分量;若h1不是IMF,则重复前两个步骤k此得到

h1k满足IMF条件,就是第1个IMF,记c1。

(4)从x(t)中减去c1,得到残差

重复(1)~(3),得到c2,以此类推,当rn为单调函数不能再提取IMF分量时,循环结束。得到n个IMF分量

终止判据

SD可以控制迭代的次数。一般取0.2~0.3比较合适。

1.3 EMD的局限性

1、原信号与其Hilbert变换构成解析信号,然后用解析信号的模和相位导数作为原信号的估计值,产生估计误差;

2、在调制信号两端出现较大误差。

1.4 matlab实现

imf=end(x)

二、Hilbert-Huang变换仿真实例

例1 对仿真信号x(t)=sin(250*\pi *t)+sin(100*\pi *t)+sin(50*\pi *t)进行EMD分解。

clc;
clear;
fs=1024;
n=1024;
t=0:1/fs:(n-1)/fs;
x=sin(2*pi*250*t)+sin(2*pi*100*t)+sin(2*pi*50*t)+0.1*randn(1,length(t));
imf=emd(x);
[m,w]=size(imf);
figure(1)
subplot(411)
plot(t,x);
title('原始波形');
subplot(412)
plot(t,imf(:,1));
ylabel('IMF1')
subplot(413)
plot(t,imf(:,2));
ylabel('IMF2');
subplot(414)
plot(t,imf(:,3));
ylabel('IMF3');
xlabel('t/s')

计算前3个IMF分量

对前3个IMF分量进行fft变换

nfft=512;
fz=(1:nfft/2)*fs/nfft;
figure(2)
for(i=1:3)
    subplot(3,1,i)
    y(:,i)=fft(imf(:,i),nfft);
    imffft(:,i)=abs(y(:,i));
    plot(fz,imffft(1:nfft/2,i)/nfft);
    xlim([0 nfft-1]);
end

从fft变换图可以看出,前三个IMF分量刚好对应频率250,100和50.

将信号进行小波包分解

T=wpdec(x,3,'db1');
Y(:,1)=wprcoef(T,[3,0]);
Y(:,2)=wprcoef(T,[3,1]);
Y(:,3)=wprcoef(T,[3,2]);
Y(:,4)=wprcoef(T,[3,3]);
Y(:,5)=wprcoef(T,[3,4]);
Y(:,6)=wprcoef(T,[3,5]);
Y(:,7)=wprcoef(T,[3,6]);
Y(:,8)=wprcoef(T,[3,7]);
figure(3)
for(i=1:8)
    subplot(8,1,i)
    plot(t,Y(:,i));
    xlim([0 (n-1)/fs]);
end

利用前三个IMF分量对信号进行重构

figure(4)
xx=imf(:,1)+imf(:,2)+imf(:,3);
plot(t,x,t,xx,'-*')
title('原始信号&重构信号')
legend('原信号','重构信号')

从上图可以看出,重构信号与原信号基本重合。

三、Hilbert-Huang在机械故障诊断中的应用

3.1 EMD-AR谱提取柴油机活塞、活塞销故障特征

AR模型是时间序列分析中最基本的数学模型。不仅可以用来故障诊断,还可以对故障进行早期预测。还可以分析短样本信号,克服了Hilbert分离算法存在加窗效应的问题。

EMD先将复杂的非稳态振动信号分解为单分量信号,然后用AR模型进行分析。

AR模型主要用于平稳过程。

例2 利用EMD-AR谱方法分析柴油机活塞销、活塞磨损故障

采样频率12.8kHz,转速为1800r/min,采样点数为16384.

clc;
clear;
close all
fs=25600;
n=16384;
t=0:1/fs:(n-1)/fs;
s1=load('Sig1.txt');
s2=load('Sig2.txt');
s3=load('Sig3.txt');
figure(1)
subplot(311)
plot(t,s1);

title('正常信号');
axis tight

subplot(312)
plot(t,s2);
title('活塞销磨损信号')
axis tight

subplot(313)
plot(t,s3);
title('活塞磨损波形');
axis tight

xlabel('t/s')

显示时域信号

EMD分解

imf1=emd(s1);
imf2=emd(s2);
imf3=emd(s3);
figure(2)
for(i=1:6)
    subplot(6,1,i)
    plot(t,imf1(:,i));
    xlim([0 (n-1)/fs]);
end

显示s1前6个分量

对前6个imf分量进行AR谱分析


N=1024;
for(i=1:6)
    xpsd=pburg(imf1(:,i),10,N);
    xpsd1(i,:)=10*log10(xpsd(1:400)+0.000001);
end
for(i=1:6)
    xpsd=pburg(imf2(:,i),10,N);
    xpsd2(i,:)=10*log10(xpsd(1:400)+0.000001);
end
for(i=1:6)
    xpsd=pburg(imf3(:,i),10,N);
    xpsd3(i,:)=10*log10(xpsd(1:400)+0.000001);
end
ss=N/2;
dd=(0:1/ss:1)*fs/2;
d=dd(1:400);
figure(3)
for(i=1:6)
    subplot(3,2,i)
    plot(d,xpsd1(i,:),'b-',d,xpsd2(i,:),'b--',d,xpsd3(i,:),'b-.');
    legend('正常','活塞销磨损','活塞磨损');
    ylabel('EMD-AR谱/db');
end

将前6个imf分量的AR谱累加

q1=sum(xpsd1);
q2=sum(xpsd2);
q3=sum(xpsd3);
figure(4)
plot(d,q1,'b-',d,q2,'b--',d,q3,'b-.');
legend('正常','活塞销磨损','活塞磨损');
xlabel('频率/Hz');
ylabel('EMD-AR谱/dD')

例3 将例2方法应用到轴承故障

clc;
clear;
close all
fs=25600;
n=16384;
t=0:1/fs:(n-1)/fs;
s1=load('Sig1.txt');
s2=load('Sig2.txt');
s3=load('Sig3.txt');
figure(1)
subplot(311)
plot(t,s1);

title('正常信号');
axis tight

subplot(312)
plot(t,s2);
title('活塞销磨损信号')
axis tight

subplot(313)
plot(t,s3);
title('活塞磨损波形');
axis tight
xlabel('t/s')

时域图

EMD分解

imf1=emd(s1);
imf2=emd(s2);
imf3=emd(s3);
figure(2)
for(i=1:6)
    subplot(6,1,i)
    plot(t,imf1(:,i));
    xlim([0 (n-1)/fs]);
end

N=1024;
for(i=1:6)
    xpsd=pburg(imf1(:,i),10,N);
    xpsd1(i,:)=10*log10(xpsd(1:400)+0.000001);
end
for(i=1:6)
    xpsd=pburg(imf2(:,i),10,N);
    xpsd2(i,:)=10*log10(xpsd(1:400)+0.000001);
end
for(i=1:6)
    xpsd=pburg(imf3(:,i),10,N);
    xpsd3(i,:)=10*log10(xpsd(1:400)+0.000001);
end
ss=N/2;
dd=(0:1/ss:1)*fs/2;
d=dd(1:400);
figure(3)
for(i=1:6)
    subplot(3,2,i)
    plot(d,xpsd1(i,:),'b-',d,xpsd2(i,:),'b--',d,xpsd3(i,:),'b-.');
    legend('正常','活塞销磨损','活塞磨损');
    ylabel('EMD-AR谱/db');
end

q1=sum(xpsd1);
q2=sum(xpsd2);
q3=sum(xpsd3);
figure(4)
plot(d,q1,'b-',d,q2,'b--',d,q3,'b-.');
legend('DE','BA','FE');
xlabel('频率/Hz');
ylabel('EMD-AR谱/dD')

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

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

相关文章

Linux:进程和计划任务管理

目录 一、程序和进程 1.1、程序 1.2、进程 1.3、线程 1.4、协程 二、查看进程相关命令 2.1、ps命令(查看静态的进程统计信息) 第一行为列表标题,其中各字段的含义描述如下 2.2、top命令(查看进程动态信息) 2…

【强化学习的数学原理】课程笔记--1(基本概念,贝尔曼公式)

目录 基本概念State, Action, State transitionPolicy, Reward, Trajectory, Discount ReturnEpisodeMarkov decision process 贝尔曼公式推导确定形式的贝尔曼公式推导一般形式的贝尔曼公式State ValueAction Value 一些例子贝尔曼公式的 Matric-vector form贝尔曼公式的解析解…

VS studio2019配置远程连接Ubuntu

VS studio2019配置远程连接Ubuntu 1、网络配置 (1)获取主机IP (2)获取Ubuntu的IP (3)在 windows 的控制台中 ping 虚拟机的 ipv4 地址,在 Ubuntu 中 ping 主机的 ipv4 地址。 ubuntu: ping…

多分类情绪识别模型训练及基于ChatGLM4-9B的评论机器人拓展

你的下一个微博罗伯特何必是罗伯特 这是一篇我在使用开源数据集(Twitter Emotion Dataset (kaggle.com))进行情绪识别的分类模型训练及将模型文件介入对话模型进行应用的过程记录。当通过训练得到了可以输入新样本预测的模型文件后,想到了或许可以使用模型文件对新样…

recogito-js:用于文本注释/图像注释的前端插件

创建批注: 继续批注: 右侧批注列表: 1、功能与应用: 文本注释:recogito-js可以将注释功能添加到网页上,或者作为构建完全自定义注释应用程序的工具箱。图像注释:除了文本注释外,它还…

测试用例设计方法-因果图法

大家好,在软件开发过程中,测试是确保产品质量和稳定性的关键步骤。而设计有效的测试用例则是保证测试过程高效和全面的重要因素之一。在各种测试用例设计方法中,因果图法作为一种结构化和系统化的方法,日益受到测试人员的青睐。 因…

python练习题2

python期考复习题 目录 1. 判断n**2的值每一位互不相同​编辑 2. 密码 3. 图书版号 4. 情感分类矩阵 5. 计算数对个数 1. 判断n**2的值每一位互不相同 def isdiff(n):sstr(n)for i in range(len(s)):for j in range(len(s)):if i!j:if s[i]s[j]:return Falsereturn Truel…

ET9中ETTask传递新的Context原理

ET9中ETTask传递新的Context原理 前言 每一个异步函数都会创建两个对象, 第1个是当前异步函数返回值(ETTASK)对应的ETAsyncTaskMethodBuilder,通过这个类的静态方法Create创建返回,这个builder类中会有一个Task对象&…

FME实现批量合并shapefile文件数据,并提取原文件名,输出到属性表字段中的解决方法

目录 一、实现效果 二、实现过程 1.读取数据 2.暴露文件名属性 3.设置文件名字段 4.输出成果 5.模板的使用 三、总结 今天来介绍如何使用FME软件来实现对多个shapefile数据进行批量合并,同时提取原文件名并存储到合并后shapefile数据属性表字段中的方法&…

中小企业的数字化转型业务场景落地案例

引言:随着商业活动的复杂化和全球化程度的提高,合同作为商业交易的重要组成部分,其数量、条款和复杂性都在不断增加。企业面临着越来越多的合同管理挑战,包括合同数量增多、条款繁琐、文件分散存储等问题。而中小企业由于管理不到…

HMI 的 UI 风格,精妙无比

HMI 的 UI 风格,精妙无比

Shopee本土店选品有什么技巧?EasyBoss ERP为你整理了6个高效选品的方法!

电商圈有句话叫:七分靠选品,三分靠运营,选品对了,事半功倍,选品错了,功亏一篑! 很多卖家都会为选品发愁,特别对于Shopee本土店卖家来说,要囤货到海外仓,如果…

前端 Array.sort() 源码学习

源码地址 V8源码Array 710行开始为sort()相关 Array.sort()方法是那种排序呢&#xff1f; 去看源码主要是源于这个问题 // In-place QuickSort algorithm. // For short (length < 22) arrays, insertion sort is used for efficiency.源码中的第一句话就回答了我的问题…

QT的keypressevent只响应功能键不响应字母键或者组合键

参考https://bbs.csdn.net/topics/392378467 这位兄弟准确说明了解决方案。 在pyqt中&#xff0c;则在__init__中添加 self.grabKeyboard()

专题页面设计指南:从构思到实现

如何设计专题页&#xff1f;你有什么想法&#xff1f;专题页的设计主要以发扬产品优势为核心。一个好的专题页可以从不同的角度向用户介绍产品&#xff0c;扩大产品的相关优势&#xff0c;表达产品的优势&#xff0c;让用户在短时间内了解产品。因此&#xff0c;在设计详细信息…

数据采集Selenium中的弹窗处理

在爬虫技术中&#xff0c;弹窗处理是一个常见但具有挑战性的问题。Selenium作为一个强大的网页自动化工具&#xff0c;可以帮助我们有效地处理网页中的各种弹窗。本文将概述如何使用Selenium处理弹窗&#xff0c;并提供实现代码&#xff0c;代码中将使用代理IP技术。 概述 弹…

基于Java微信小程序火锅店点餐系统设计和实现(源码+LW+调试文档+讲解等)

&#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN作者、博客专家、全栈领域优质创作者&#xff0c;博客之星、平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌&#x1f497; &#x1f31f;文末获取源码数据库&#x1f31f;感兴趣的可以先收藏起来&#xff0c;还…

突然!某大客户核心凌晨突然崩溃....

这几天实在太忙&#xff0c;刚弄完文档。业务线的同事就找到我&#xff0c;说一个银行客户的核心系统昨晚出了故障&#xff0c;还没找到原因&#xff0c;希望能帮忙分析下。 从提供的信息来看是业务跑任务报错&#xff0c;遇到了Oracle-00600和ora-07445 错误。 Doing block re…

Zynq7000系列FPGA中的DMA控制器——PL外设请求接口

图9-4中展示了PL外设请求接口主要由两部分组成&#xff1a;PL外设请求总线和DMAC确认总线。这两部分分别使用特定的前缀进行标识&#xff0c;具体如下&#xff1a; PL外设请求总线&#xff08;PL Peripheral Request Bus&#xff09;&#xff1a; 前缀&#xff1a;DR功能&…

YOLO模型评价指标

在模型训练完成之后&#xff0c;需要对模型的优劣作出评估&#xff0c;YOLO系列算法的评价指标包括&#xff1a; 1. 准确率&#xff08;Precision&#xff09;&#xff1a;指模型预测为正样本中实际为正样本的比例。 &#x1d447;&#x1d443;、&#x1d439;&#x1d443;、…