当前位置:文档之家› LMD经验模态分解matlab程序

LMD经验模态分解matlab程序

LMD经验模态分解matlab程序
LMD经验模态分解matlab程序

LMD经验模态分解matlab程序——原味的

曾经也用滑动平均写过LMD,其实滑动平均的EMD才是原汁原味的居于均值分解。

分享给有需要的人,程序写的不好,只是希望提供一种思路。如果谁写了更完美LMD程序,别忘了发我一份,快毕业了,一直没有把LMD写完美,对于我来说始终是个遗憾。来分完美的LMD让我也品尝下,我也无憾了~

代码下载地址:https://www.doczj.com/doc/b49149826.html,/source/3102096

此处没有提供测试代码,如需要可以点这里:点我

源代码如下:

%原始lmd算法,效果很不好,不知道程序哪里写错

function[PF,A,SI]=lmd(m)

c=m;

k=0

wucha1=0.001;

n_l=nengliang(m);

while 1

k=k+1;

a=1;

h=c;

[pf,a,si]=zhaochun(a,h,wucha1);

c=c-pf;

PF(k,:)=pf;

A(k,:)=a;

SI(k,:)=si;

c_pos=pos(c);

n_c=nengliang(c);

n_pf=nengliang(pf);

if length(c_pos)<3 || n_c

PF(k+1,:)=c;

break

end

end

function pos=pos(y)

%功能:找序列极值点位置坐标

%y:输入序列

%pos:极值点的序列位置坐标

m = length(y);

d = diff(y);

n = length(d);

d1 = d(1:n-1);

d2 = d(2:n);

indmin = find(d1.*d2<0 & d1<0)+1;

indmax = find(d1.*d2<0 & d1>0)+1;

if any(d==0)

imax = [];

imin = [];

bad = (d==0);

dd = diff([0 bad 0]);

debs = find(dd == 1);

fins = find(dd == -1);

if debs(1) == 1

if length(debs) > 1

debs = debs(2:end);

fins = fins(2:end);

else

debs = [];

fins = [];

end

end

if length(debs) > 0

if fins(end) == m

if length(debs) > 1

debs = debs(1:(end-1));

fins = fins(1:(end-1));

else

debs = [];

fins = [];

end

end

end

lc = length(debs);

if lc > 0

for k = 1:lc

if d(debs(k)-1) > 0

if d(fins(k)) < 0

imax = [imax round((fins(k)+debs(k))/2)]; end

else

if d(fins(k)) > 0

imin = [imin round((fins(k)+debs(k))/2)]; end

end

end

end

if length(imax) > 0

indmax = sort([indmax imax]);

end

if length(imin) > 0

indmin = sort([indmin imin]);

end

end

minmax=cat(2,indmin,indmax);

pos=sort(minmax);

end

%----------zhaochun.m

function [pf,a,si]=zhaochun(a,h,wucha1)

chun_num=0;

while 1

chun_num=chun_num+1

t=1:length(h);

h_pos=position(h);%极值点位置序列

tpoint=t(h_pos);%极值点时间值

hpoint=h(h_pos);%极值点幅度值

hpoint=bianjie(h,hpoint,1);%端点处理后的极值点,多出了2个极值点

[mi,ai]=find_miai(hpoint);%找出极值点之间的均值函数和包络函数

mi_point=junzhi(mi);%所有极值点处的均值序列(幅值)-纵坐标(点序列)

ai_point=junzhi(ai);%所有极值点处的包络序列(幅值)-纵坐标(点序列)

%此处端点处的均值和包络都是端点和极值点之间的均值和包络值(如果端点视作极值点,这样处理是不合理的,端点都不是极值点,这样处理是正确的)

lmi_point=mi(1);%左端点的均值

rmi_point=mi(length(mi));%右端点的均值

lai_point=ai(1);%左端点的包络

rai_point=ai(length(ai));%右端点的包络

%

mi_point_d=link(lmi_point,rmi_point,mi_point);%连接端点均值及所有极值点处的均值(带端点的均值序列)(点序列)

ai_point_d=link(lai_point,rai_point,ai_point);%连接端点包络及所有极值点出的包络值(带端点的包络序列)(点序列)

%

tpoint_d=link(t(1),t(length(t)),tpoint);

mi_fun=chadian1(tpoint_d,mi,mi_point_d);%包含端点和极值点和普通点的均值序列-平缓前的均值序列

ai_fun=chadian1(tpoint_d,ai,ai_point_d);%包含端点和极值点和普通点的包络序列-平滑前的包络序列

%以上是完整的未处理的均值函数mi_fun和包络函数ai_fun

%找出第一平滑的滑动跨度

kmax=max(diff(tpoint_d));%找出时间跨度最大的相邻几点间的距离

kmax1=uint16(kmax/3);

kmax1=double(kmax1);

jiou=uint8(rem(kmax1,2));

if kmax1<3

move_k=3; % b<3,滑动跨度=3,

elseif jiou==0 % b>=3,当b是偶数时,跨度=b-1

move_k=(kmax1-1);

else move_k=kmax1; %b>=3,b是奇数时,跨度=b

end

[mi_move,move_mi_num]=move(mi_fun,move_k);

[ai_move,move_ai_num]=move(ai_fun,move_k);

mi=mi_move;

ai=ai_move;

a=a.*ai;

si=(h-mi)./ai;

h=si;

ai_funmax=max(ai);

ai_funmin=min(ai);

if (ai_funmax<=1+wucha1&&ai_funmin>=1-wucha1)

break

end

end

pf=a.*si;

end

function [x,flag]=move(a,k)

l=length(a);

t=1:l;

% jingdu=t(2)-t(1);

flag=0;

x=a;

max_flag=10;%平滑重复的最大次数设置

max_error=0;%相邻两点间相等允许的最大差异(理论上=0才人为无差异,实际操作要考虑采样精度,所以可以设置一个允许范围)

while flag<=max_flag || min(abs(diff(x)))<=max_error;%这里用到abs,然后再min,因为幅值的差值会出现负值,我们的目的是找差值=0,而不是负数

if flag==0

flag=flag+1;%flag标志位,标志平滑的次数,这里这里设置为不超过11次(最大10次) else

flag=flag+1;%flag标志位,标志平滑的次数,这里这里设置为不超过11次(最大10次) x_pos=position(x);%极值点位置序列

tpoint=t(x_pos);%极值点时间值

tpoint_d=link(t(1),t(l),tpoint);%极值点的时间轴上的位置

kmax=max(diff(tpoint_d));%找出时间跨度最大的相邻几点间的距离

kmax1=uint16(kmax/3);

kmax1=double(kmax1);

jiou=uint8(rem(kmax1,2));

if kmax1<3

k=3; % b<3,滑动跨度=3,

elseif jiou==0 % b>=3,当b是偶数时,跨度=b-1

k=(kmax1-1);

else k=kmax1; %b>=3,b是奇数时,跨度=b

end

end

y=zeros(1,l);% 初始化序列y, y是中间变量%%%%%%%%%%%%%%%%%%%边界点的处理%%%%%%%%%%%%%%

for i=1:(k-1)/2

v=0;

z=0;

for j=1:i*2-1

v=v+x(j);

end

y(i)=v/(i*2-1);

for j=l:-1:l+2-i*2 %j=l:-1:l+1-(i*2-1)

z=z+x(j);

end

y(l+1-i)=z/(i*2-1);

end

%%%%%%%%%%%%%%中间点的处理%%%%%%%%%%%%%%%%%%%%%%%%%%

for i=1+(k-1)/2:l-(k-1)/2 %这个(d+1)/2是跨度的中点单边的边界点数=中点值

-1=(d+1)/2-1=(d-1)/2

w=x(i);

for j=1:(k-1)/2

w=w+x(i-j)+x(i+j);

end

y(i)=w/k;

end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

x=y;

end

%k % 调试的时候查看

%flag % 调试的时候查看

end

function hpp=bianjie(hh,hp,style)

%hh:需要边界处理的序列

%hp:需要边界处理序列的极值点的幅度值

%style:边界处理类型1:端点全部看作极值点2:左右两端各增加1个幅值为0的极值点%hpp:边界处理后,极值点幅值多处了两个,因为左边右边各人为加上了一个

if style==1

a=hh(1);

b=hh(length(hh));

end

if style==2

a=0;

b=0;

end

hpp=link(a,b,hp);

end

function pos=position(y)

%功能:找序列极值点位置坐标

%y:输入序列

%pos:极值点的序列位置坐标

m = length(y);

d = diff(y);

n = length(d);

d1 = d(1:n-1);

d2 = d(2:n);

indmin = find(d1.*d2<0 & d1<0)+1;

indmax = find(d1.*d2<0 & d1>0)+1;

if any(d==0)

imax = [];

imin = [];

bad = (d==0);

dd = diff([0 bad 0]);

debs = find(dd == 1);

fins = find(dd == -1);

if debs(1) == 1

if length(debs) > 1

debs = debs(2:end);

fins = fins(2:end);

else

debs = [];

fins = [];

end

end

if length(debs) > 0

if fins(end) == m

if length(debs) > 1

debs = debs(1:(end-1));

fins = fins(1:(end-1));

else

debs = [];

fins = [];

end

end

end

lc = length(debs);

if lc > 0

for k = 1:lc

if d(debs(k)-1) > 0

if d(fins(k)) < 0

imax = [imax round((fins(k)+debs(k))/2)]; end

else

if d(fins(k)) > 0

imin = [imin round((fins(k)+debs(k))/2)]; end

end

end

end

if length(imax) > 0

indmax = sort([indmax imax]);

end

if length(imin) > 0

indmin = sort([indmin imin]);

end

end

minmax=cat(2,indmin,indmax);

pos=sort(minmax);

end

function [mi,ai]=find_miai(ypoint)

%

Lyp=length(ypoint);

al=wkeep(ypoint,Lyp-1,'l');

ar=wkeep(ypoint,Lyp-1,'r');

mi=(al+ar)/2;

ai=abs(ar-al)/2;

end

function c=junzhi(a)

l=length(a);

al=wkeep(a,l-1,'l');

ar=wkeep(a,l-1,'r');

c=(al+ar)/2;

end

function d=link(a,b,c)

d=[a';c';b']';

%头:尾:中间

end

function f_value=chadian1(a,b,c)

% chadian1 把端点及极值点处对应的总坐标值插入,原来的均值函数的方波序列中

%输入参数a:点序列(行向量)(包含端点和极值点以在时间上的位置-横坐标)(n个)(点序列-横坐标)

%输入参数b:段序列(行向量)(点序列a 每两点之间的纵坐标的值-纵坐标)(n-1)-(段序列-纵坐标)

%输入参数c:点序列(行向量)(包含端点和极值点在对应时间上的幅值-纵坐标)(n个)-(点序列-纵坐标)

%输入参数d:原始数据的采样精度

%输出参数f_value(行向量): 点序列a 插入段序列的值之后,以c的精度的值(对应于横坐标,纵坐标的值)

%精度是0.001

l=length(b);

al=wkeep(a,l,'l');

ar=wkeep(a,l,'r');

d={[]};%d={0}这样是为了初始化元胞数组

for i=1:l %采样精度0.001

d{i}=ones(1,(ar(i)-al(i)-1))*b(i);%ones函数参数要为整数,unint16就是数据强制类型转换,end %这里没有使用到单独为uint16((ar(i)-al(i))*1000)-1)这个自变量赋值,所以只是个中间变量,对数据不会产生污染

y=c(1);

for i=1:l

y=link(y,c(i+1),d{i});

end

f_value=y;

end

end

%------

function p=nengliang(y) % my=mean(y);

% p=(y-my).*(y-my); % p=sum(p);

p=sum(abs(y).^2);

end

%--------

求一维序列的信息熵(香浓熵)的matlab程序实例

对于一个二维信号,比如灰度图像,灰度值的范围是0-255,因此只要根据像素灰度值(0-255)出现的概率,就可以计算出信息熵。

但是,对于一个一维信号,比如说心电信号,数据值的范围并不是确定的,不会是(0-255)这么确定,如果进行域值变换,使其转换到一个整数范围的话,就会丢失数据,请高手指点,怎么计算。

比如数字信号是x(n),n=1~N

(1)先用Hist函数对x(n)的赋值范围进行分块,比如赋值范围在0~10的对应第

一块,10~20的第二块,以此类推。这之前需要对x(n)做一些归一化处理

(2)统计每一块的数据个数,并求出相应的概率

(3)用信息熵公式求解

以上求解方法获得的虽然是近似的信息熵,但是一般认为,这么做是没有问题的

求一维序列的信息熵的matlab程序代码如下:(已写成调用的函数形式)

测试程序:

fs=12000;

N=12000;

T=1/fs;

t=(0:N-1)*T;

ff=104;

sig=0.5*(1+sin(2*pi*ff*t)).*sin(2*pi*3000*t)+rand(1,length(t));

Hx=yyshang(sig,10)

%———————求一维离散序列信息熵matlab代码

function Hx=yyshang(y,duan)

%不以原信号为参考的时间域的信号熵

%输入:maxf:原信号的能量谱中能量最大的点

%y:待求信息熵的序列

%duan:待求信息熵的序列要被分块的块数

%Hx:y的信息熵

%duan=10;%将序列按duan数等分,如果duan=10,就将序列分为10等份

x_min=min(y);

x_max=max(y);

maxf(1)=abs(x_max-x_min);

maxf(2)=x_min;

duan_t=1.0/duan;

jiange=maxf(1)*duan_t;

% for i=1:10

% pnum(i)=length(find((y_p>=(i-1)*jiange)&(y_p

% end

pnum(1)=length(find(y

for i=2:duan-1

pnum(i)=length(find((y>=maxf(2)+(i-1)*jiange)&(y

end

pnum(duan)=length(find(y>=maxf(2)+(duan-1)*jiange));

%sum(pnum)

ppnum=pnum/sum(pnum);%每段出现的概率

%sum(ppnum)

Hx=0;

for i=1:duan

if ppnum(i)==0

Hi=0;

else

Hi=-ppnum(i)*log2(ppnum(i));

end

Hx=Hx+Hi;

end

end

%----------------

扩展阅读:

实验一:计算离散信源的熵

一、实验设备:

1、计算机

2、软件:Matlab

二、实验目的:

1、熟悉离散信源的特点;

2、学习仿真离散信源的方法

3、学习离散信源平均信息量的计算方法

4、熟悉Matlab 编程;

三、实验内容:

1、写出计算自信息量的Matlab 程序

2、写出计算离散信源平均信息量的Matlab 程序。

3、掌握二元离散信源的最大信息量与概率的关系。

4、将程序在计算机上仿真实现,验证程序的正确性并完成习题。

四、实验报告要求

简要总结离散信源的特点及离散信源平均信息量的计算,写出习题的MATLAB实现语句。

信息论基础:

自信息的计算公式

Matlab实现:I=log2(1/p)或I=-log2(p)

熵(平均自信息)的计算公式

Matlab实现:HX=sum(-x.*log2(x));或者h=h-x(i)*log2(x(i));

习题:

1.甲地天气预报构成的信源空间为:

乙地信源空间为:

求此两个信源的熵。求各种天气的自信息量。

案:

运行程序:

p1=[1/2,1/4,1/8,1/8];%p1代表甲信源对应的概率

p2=[7/8,1/8];%p2代表乙信源对应的概率

H1=0.0;

H2=0.0;

I=[];

J=[];

for i=1:4

H1=H1+p1(i)*log2(1/p1(i));

I(i)=log2(1/p1(i));

end

disp('自信息量分别为:');

I

disp('H1信源熵为:');

H1

for j=1:2

H2=H2+p2(j)*log2(1/p2(j));

J(j)=log2(1/p2(j));

end

disp('自信息量分别为:'); J

disp('H2信源熵为:');

H2

emd经验模态分解matlab下载地址

(2011-03-19 16:46:28)

转载▼

标签:

分类:matlab语言学习

emd

经验模态分解

matlab

程序

下载

地址

一:下载EMD的MATLAB程序和MATLAB的时频工具包

EMD的MATLAB程序下载地址:http://perso.ens-lyon.fr/patrick.flandrin/emd.html MATLAB程序的作者法国人Rilling的程序写的相关的文章:《on empirical mode decompos and its algorithms》

EMD的程序要用到matlab的时频工具箱,工具箱下载地址:https://www.doczj.com/doc/b49149826.html,/

matlab的工具箱的安装步骤:

1.解压下载的文件包,将tft/mfile复制到matlab的toolbox文件夹下

2.建立搜索路径,matlab->file->Set Path->Add Folder

->选择mfile文件夹复制到matlab的toolbox的路径->save->close

3.测试是否建立搜索路径成功,在matlab命令窗口打入:which fmsin

返回的结果是你放mfile的正确路径说明建立搜索路径成功。此时就完成了安装工具包的工作。

此时EMD的准备工作就完了。

二:

新建一个文件夹,在此文件下编写你自己的程序,并把需要的EMD程序需要的m文件都拷贝到这个编程的文件夹下。

matlab里的current directroy当前工作目录选到你的编程目录。

1.测试:《on empirical mode decompos and its algorithms》图1的程序

需要的文件:

emd_fmsin.m

emd.m(io.m)

emd_visu.m

参考文章:

1. https://www.doczj.com/doc/b49149826.html,/thread-84458-1-1.html

2. https://www.doczj.com/doc/b49149826.html,/luyysea/blog/item/3035d37a1d9cfceb2e73b33a.html

http://perso.ens-lyon.fr/patrick.flandrin/emd.html

the way EMD works

emd.ppt

Matlab/C codes for EMD and EEMD with examples

March 2007 release, for use with Matlab 7.1+ (only a few non-essential

programs don't run with earlier versions)

tar.gz

zip

contact: gabriel.rilling (at) https://www.doczj.com/doc/b49149826.html,

Matlab codes for CEEMDAN (ref. [C162])

November 2012 release

tar.gz

contact: metorres (at) https://www.doczj.com/doc/b49149826.html,.ar

https://www.doczj.com/doc/b49149826.html,.ar/grupos/ldnlys/metorres/re_inter.htm#C odigos

My

Research

Interests

Biomedical Signal Processing

Electroencephalograms, Electroencephalogram and Speech

signals

Voice: Pathologies, emotions, singing

Hearing Aids

Chaos and complexity

Fractals, self similarity, LRD

Time - scale/frequency analysis - Wavelet Analysis

Empirical Mode Decomposition (EMD)

Advanced signal analysis

Our Matlab Codes

Complete Ensemble Empirical Mode Decomposition with Adaptive Noise (CEEMDAN)

Matlab code - rar file (download)

Reference paper: (https://www.doczj.com/doc/b49149826.html,/ICASSP2011/Papers/ViewPapers.asp?PaperNum=3385)

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). (pdf)

Bibref (download)

Abstract:In this paper an algorithm based on the ensemble empirical mode decomposition (EEMD) is presented. The key idea on

the EEMD relies on averaging the modes obtained by EMD applied to several realizations of Gaussian white noise added

to the original signal. The resulting decomposition solves the EMD mode mixing problem, however it introduces new ones.

In the method here proposed, a particular noise is added at each stage of the decomposition and a unique residue is computed

to obtain each mode. The resulting decomposition is complete, with a numerically negligible error. Two examples

are presented: a discrete Dirac delta function and an electrocardiogram signal. The results show that, compared with

EEMD, the new method here presented also provides a better spectral

separation of the modes and a lesser number of

sifting iterations is needed, reducing the computational cost.

https://www.doczj.com/doc/b49149826.html,/

https://www.doczj.com/doc/b49149826.html,

the Time-Frequency Toolbox

The Time-Frequency Toolbox (TFTB) is a collection of about 100 scripts for GNU Octave and Matlab (R) developed for the analysis of non-stationary signals using time-frequency distributions. It is primary intended for researchers, engineers and students with some basic knowledge in signal processing.

The toolbox contains numerous algorithms which implements various kind of time-frequency analysis with a special emphasis on quadratic energy distributions of the Cohen and affine classes, along with their version enhanced by the reassignment method. The toolbox also includes signal generation procedures, processing/post-processing routines (with display utilities) and a number of demonstrations.

The TFTB is distributed under the terms of the GNU Public Licence.

GNU Octave users, please check this important note.

Download

Current version is freely available for download.

It can also be accessed from CVS (read-only) with viewCVS or using the anonymous account (no password is needed):

export CVS_RSH="ssh"

cvs -z3 -d:pserver:anonymous@https://www.doczj.com/doc/b49149826.html,:/sources/tftb co tftb

Note: when you later update from within the module's directory (with cvs update) you do not need the -d option anymore.

Mailing lists

There are two mailing lists devoted to the TFTB.

?tftb-info: Announcement about new releases of the TFTB [subscribe, no archive available] Administrators only can send a message to this list.

?tftb-help: General discussion about using the TFTB [subscribe, archives] Documentation

Each function of the Toolbox is documented by an online help. A reference manual collects them all in a single document.

?See the Contents.m file.

?See the reference manual [PDF,HTML].

?See the tutorial [PDF,HTML].

The documentation of the TFTB is distributed under the terms of GNU Free Documentation License. Bug report

Before you file a bug, please read through the list of current and previous bugs to determine if your bug has already been filed. If your bug does not appear in the list, compile a description of the problem including a concise reproducible example and submit a bug report. If you succeeded in identifying the problem and you have a solution, join a patch to your bug report. Please, format the patch with the command

diff -c old/file.m new/file.m > patch

Related softwares

?The Time-Frequency Toolbox in C is a translation in C of parts of the TFTB.

?DiscreteTFDs is a time-frequency analysis package.

?Wavelab, a Matlab toolbox for wavelet analysis.

?LastWave, a signal processing (wavelet oriented) software.

?Another time-frequency toolbox for working with Gabor frames for finite sequences. History and acknowledgments

The TFTB has been developed by Fran?ois Auger, Olivier Lemoine, Paulo Gon?alvès and Patrick Flandrin

under the auspices of the CNRS (Centre National de la Recherche Scientifique) within its GdR Information, Signal et Images. Parts of the Toolbox have also been written at Department of Electrical and Computer Engineering of Rice University with the support of the NSF. We would like to thank the people who helped in various ways.

基于EMD的包络谱进行故障诊断matlab程序实例

(2011-03-19 17:06:09)

转载▼

分类:滚动轴承故障诊断

标签:

滚动轴承

故障诊断

matlab

程序

实例

历程

emd

共振解调

包络谱

教育

刚开始接触滚动轴承故障诊断通常都是一头雾水。

其实只要按部就班就可以了。

滚动轴承故障诊断分为数据采集、数据处理和故障辨识(或故障预测)。

一接到故障诊断这个课题,你首先要明白,这三个步骤中,你想搞哪块。一般在其中一块有突破,基本上硕士就可以毕业了。

下面介绍的是用EMD和包络解调进行数据处理,然后人工进行故障辨识。

故障数据:https://www.doczj.com/doc/b49149826.html,/source/3107403

该故障数据是美国凯斯西储大学轴承数据中心的,数据使用方法见:

https://www.doczj.com/doc/b49149826.html,/s/blog_574d08530100p3pr.html

matlab程序:(内圈故障、外圈故障)

EMD经验模式分解信息汇总资料

EMD Empirical Mode Decomposition 经验模态分解 美国工程院院士黄锷1998年提出 一种自适应数据处理或挖掘方法,适用于非线性、非平稳时间序列的处理。 1.什么是平稳和非平稳 时间序列的平稳,一般是宽平稳,即时间序列的方差和均值是和时间无关的常数,协方差与与时间间隔有关、与时间无关。未来样本时间序列,其均值、方差、协方差必定与已经获得的样本相同,理解为平稳的时间序列是有规律且可预测的,样本拟合曲线的形态具有“惯性”。 而非平稳信号样本的本质特征只存在于信号所发生的当下,不会延续到未来,不可预测。 严格来说实际上不存在理想平稳序列,实际情况下都是非平稳。 2.什么是EMD经验模态分解方法? EMD理论上可以应用于任何类型时间序列信号的分解,在实际工况中大量非平稳信号数据的处理上具有明显优势。这种优势是相对于建立在先验性假设的谐波基函数上的傅里叶分解和小波基函数上的小波分解而言的。EMD分解信号不需要事先预定或强制给定基函数,而是依赖信号本身特征自适应地进行分解。 相对于小波分解:EMD克服了基函数无自适应性的问题,小波分析需要选定一个已经定义好的小波基,小波基的选择至关重要,一旦选定,在整个分析过程中无法更换。这就导致全局最优的小波基在局部的表现可能并不好,缺乏适应性。而EMD不需要做预先的分析与研究,可以直接开始分解,不需要人为的设置和干预。 相对于傅里叶变换:EMD克服了传统傅里叶变换中用无意义的谐波分量来表示非线性、非平稳信号的缺点,并且可以得到极高的时频分辨率。 EMD方法的关键是将复杂信号分解为有限个本征模函数IMF,Intrinsic Mode Function。分解出来的IMF分量包含了原信号的不同时间尺度上的局部特征信号。 这句话中:不同时间尺度=局部平稳化,通过数据的特征时间尺度来获得本征波动模式,然后分解or筛选数据。 本质上,EMD将一个频率不规则的波化为多个单一频率的波+残波的形式。 原波形=ΣIMFs+余波 信号()t f 筛选出的本征模函数IMF包括余波,对应有实际的物理成因。 现实中的信号分量IMF不会保持完全稳定的频率和振幅,也常常无法从各个分量中直接看出信号规律。EMD分解经常被用作信号特征提取的一个预先处理手段,将各IMF分量作为后续分析方法的输入,以完成更加复杂的工作。 3.IMF的筛选过程 第一步: Get原数据曲线f(t)所有极大值点,三次样条插值函数拟合成原数据的上包络线; Get原数据曲线f(t)所有极小值点,三次样条插值函数拟合成原数据的下包络线。

经验模态分解和算法

经验模态分解和算法 摘要——黄提出了经验模态分解(EMD)的数据处理方法,也对这种技术应用的有效性进行了讨论。许多变种算法(新的停止准则,即时版本的算法)也产生出来。数值模拟用来作经验性的评估执行单元运用于语音识别和分离方面,得出的实验结果认为这种方法是根据自适应的常数Q的滤波器组提出的。 1.介绍 近来,一种被称为EMD的新的非线性方法被黄等人提出,这种方法能够自适应的把非平稳信号分解成一系列零均值的AMFM信号(调频调幅) 的总和。尽管这种方法经常有着显著的效果,但是这个方法在算法方面的定义是困难的,因此这种方法没有作为一种分析方法得到承认,一般一种分析方法是需要有理论分析和性能评估。因此本文的目的是用实验的方式使得该算法更容易理解,并且提出了基于原算法的各种各样的改进的算法。设置实验性能评估的许多初始条件是为了获取一种有效的分解并且使得该算法更容易理解。 2.EMD基础 EMD的出发点是把信号内的震荡看作是局部的。实际上,如果我们要看评估信号x(t)的2个相邻极值点之间的变化(2个极小值,分别在t-和t+处),我们需要定义一个(局部)高频成分{d(t),t-<=t<=t+}(局部细节),这个高频成分与震荡相对应,震荡在2个极小值之间并且通过了极大值(肯定出现在2极小值之间)。为了完整这个图形,我们还需要定义一个(局部)低频成分m(t)(局部趋势),这样x(t)=m(t)+d(t),(t-<=t<=t+)。对于整个信号的所有震动成分,如果我们能够找到合适的方法进行此类分解,这个过程可以应用于所有的局部趋势的残余成分,因此一个信号的构成成分能够通过迭代的方式被抽离出来。 对于一个给定的信号x(t),进行有效的EMD分解步骤如下: 1)找出想x(t)的所有极值点 2)用插值法对极小值点形成下包络emint(t),对极大值形成上包络emax(t) 3)计算均值m(t)=(emint(t)+emax(t))/2 4)抽离细节d(t)=x(t)-m(t) 5)对残余的m(t)重复上诉步骤 在实际中,上述过程需要通过一个筛选过程进行重定义,筛选过程的第一个迭代步骤是对细节信号d(t)重复从1-4步,直到d(t)的均值是0,或者满足某种停止准则才停止迭代。一旦满足停止准则,此时的细节信号d(t)就被称为IMF,d(t)对应残量信号用第5步计算。通过以上过程,极值点的数量伴随着残量信号的产生而越来越少,整个分解过程会产生有限个模函数(IMF)。 模函数和残量信号可以进行谱分析,但是这个谱分析不能从狭隘的角度来看。首先,需要强调一下,即使是谐振荡,应用上述方法产生的高频和低频也只是局部的,没办法产生一个预设的频带过滤(例如小波变换)进行辨识。选择的模函数对应了一个自适应(依赖于信号自身的)的时变滤波器。一个这方面的例子:一个信号由3个部分组成(这3个部分是时间频率上都明显叠加的信号),用上述方法成功的分解了。分解如图1所示。这个例子的程序是emd_fmsin2.m 另外一个例子(emd_sawtooth.m)强调了EMD潜在的非谐振性质如图2所示。在这些例子中,线性的非线性的震荡都能被有效的识别和分离。因而,任何谐振分析(傅里叶,小波,…)可能结束在同类文章中,更少的紧凑和更少的实际意义的分解。 3.算法的改进 正如第二部分所定义的,EMD算法依赖于一系列的选项,这些选项需要用户控制,并且需要专业的知识。在此我们的目的找出更准确的选项,并且给予原来的算法进行改进。3.1采样率,插值方法和边缘效应

二维经验模态分解的关键问题

Key Problems of Bidimensional Empirical Mode Decomposition Guangtao Ge School of Information and Electronic Engineering Zhejiang Gongshang University Hangzhou, China ggtggtggt@https://www.doczj.com/doc/b49149826.html, Guangtao Ge Department of Information Science & Electronic Engineering Zhejiang University Hangzhou, China ggtggtggt@https://www.doczj.com/doc/b49149826.html, Abstract—In recent years , an emerging theory of Empirical Mode Decomposition (EMD) is an important breakthrough in the field of signal processing. This paper reviews three key problems in the development of the Bidimensional Empirical Mode Decomposition (BEMD) theory and introduces the latest developments of surface-fitting algorithms, boundary corruption solution methods and the BEMD criterion for stopping the sifting process. Then this paper also comments several open problems in BEMD theory and discusses the existing difficult problems . Keywords-component; Bidimensional Empirical Mode Decomposition; surface-fitting; boundary corruption; BEMD criterion 二维经验模态分解的关键问题 葛光涛1, 2 1.浙江工商大学信息与电子工程学院,杭州,中国,310018 2. 浙江大学信息与电子工程学系,杭州,中国,310027 ggtggtggt@https://www.doczj.com/doc/b49149826.html, 【摘要】近年国际上出现的经验模态分解理论(Empirical Mode Decomposition , EMD)是信号处理领域的一个重大突破。本文综述了二维经验模态分解(Bidimensional Empirical Mode Decomposition , BEMD)理论发展过程中涉及的三个关键问题,并着重介绍了曲面拟合、边界污染处理和停止准则制定这三个方面的最新进展,评述了其中的公开问题,对研究中现存的难点问题进行了探讨。 【关键词】二维经验模态分解;曲面拟合;边界污染;停止准则 1 引言 1998 年美国国家宇航局(NASA)的Norden E.huang等人首次提出对一列时间序列数据先进行经验模态分解(以Empirical Mode Decomposition表示 , 简写作EMD),然后对各个分量作希尔伯特变换。这种变换被称为希尔伯特黄变换(Hilbert-Huang transform, HHT)[1,3]。这种信号处理方法被认为是近年来对以傅立叶变换为基础的线性和稳态谱分析的一个重大突破。该方法从本质上讲是对一个复杂的信号进行平稳化处理[2],其结果是将信号中不同尺度的波动或趋势逐级分解开来,由于这种分解是基于局部特征尺度,作为一种完全的数据驱动方法,它具有良好的局部适应性,因此,该方法既能对平稳信号进行分析,又能对非平稳信号进行分析。 以往很多的一维信号处理方法被成功地推广到空间二维信号处理领域,被应用于二维图像数据的处理时同样可以得到良好的效果[4]。例如,傅立叶变换、离散余弦变换以及小波变换等信号处理的技术已经广泛应用于数字图像处理领域,具体应用包括图像滤波、图像复原、图像增强、图像拼接、图像压缩以及数字水印等方面。经验模态分解方法在一维信号处理方面已经获得巨大的成功,所以如果能将一维经验模式分解方法推广到二维,将会给图像处理等领域提供一种新的有效的数据处理手段。 二维经验模态分解理论的发展过程中主要涉及以下几个重要问题[5]:曲面的精确拟合,边界污染的克服,合理停止准则的制定等。 2010 International Conference on Remote Sensing (ICRS) 978-1-4244-8729-5/10/$26.00 ?2010 IEEE ICRS2010

LMD经验模态分解matlab程序要点

LMD经验模态分解matlab程序——原味的 曾经也用滑动平均写过LMD,其实滑动平均的EMD才是原汁原味的居于均值分解。 分享给有需要的人,程序写的不好,只是希望提供一种思路。如果谁写了更完美LMD程序,别忘了发我一份,快毕业了,一直没有把LMD写完美,对于我来说始终是个遗憾。来分完美的LMD让我也品尝下,我也无憾了~ 代码下载地址:https://www.doczj.com/doc/b49149826.html,/source/3102096 此处没有提供测试代码,如需要可以点这里:点我 源代码如下: %原始lmd算法,效果很不好,不知道程序哪里写错 function[PF,A,SI]=lmd(m) c=m; k=0 wucha1=0.001; n_l=nengliang(m); while 1 k=k+1; a=1; h=c; [pf,a,si]=zhaochun(a,h,wucha1); c=c-pf; PF(k,:)=pf; A(k,:)=a; SI(k,:)=si; c_pos=pos(c); n_c=nengliang(c); n_pf=nengliang(pf); if length(c_pos)<3 || n_c

经验模态分解及其雷达信号处理

0引言 当今信息时代,快速、高效的数据处理技术在科学研究、 工程应用乃至社会生活的方方面面都起着重要的作用。伴随着计算机技术的兴起,频谱分析被广泛应用于工程实践。但 Fourier 变换要求信号满足Dirichlet 条件,即对信号进行平稳 性假设,而现实中大量存在的是非平稳信号。针对Fourier 变换的不足,短时Fourier 变换(Short Time Fourier Transform , STFT ),即通过对一个时间窗内的信号进行Fourier 变换,分 析非平稳信号。虽然STFT 具有时频分析能力,但它具有固定 的时频分辨率,且难以找到合适的窗函数。而时频分析方法中的Wigner-Ville 分布存在严重的交叉项,会造成虚假信息的出现。小波变换具有可变的时频分析能力,在图像压缩和边缘检测等领域得到成功应用。但小波基不能自动更换,而且对众多小波基的合理选取也是一个难题。小波变换本质上是一种可变窗的Fourier 变换[1]。总之,这些方法没有完全摆脱 Fourier 变换的束缚,从广义上说都是对Fourier 变换的某种修 正,而且其时频分辨能力受到Heisenberg 不确定原理的制约。 Huang 等[1]在1998年提出了经验模态分解(Empirical 经验模态分解及其雷达信号处理 摘要 为了准确估计信号的瞬时频率,可用经验模态分解(EMD )将信号分解成有限个窄带信号。该方法因具有很强的自适应性及 处理非平稳信号的能力而引起广泛关注,已在众多工程领域得到应用。但EMD 是基于经验的方法,数值仿真和试验研究仍是分析 EMD 算法的主要方法。本文总结了EMD 算法存在的问题,并指出深入挖掘支持该方法的理论基础是消除制约EMD 算法进一步发 展和应用推广的关键。针对所存在的问题,从改进筛分停止准则、抑制端点效应、改进包络生成方法和解决模态混叠问题等诸方面阐述了改进EMD 算法的研究进展。综述了EMD 在雷达信号处理领域的应用。最后分析指出了进一步研究EMD 的几个主要方向。 关键词经验模态分解(EMD );希尔伯特-黄变换(HHT );时频信号分析;雷达信号处理 中图分类号TN911.7文献标识码A 文章编号1000-7857(2010)10-0101-05 杨彦利,邓甲昊 北京理工大学机电学院;机电工程与控制重点实验室,北京100081 Empirical Mode Decomposition and Its Application to Radar Signal 收稿日期:2010-03-24 作者简介:杨彦利,博士研究生,研究方向为探测、制导与控制,电子信箱:yyl070805@https://www.doczj.com/doc/b49149826.html, ;邓甲昊(通信作者),教授,研究方向为中近程目标探测、 信号处理及感知与自适应控制,电子信箱:bitdjh@https://www.doczj.com/doc/b49149826.html, YANG Yanli,DENG Jiahao Laboratory of Mechatronic Engineering &Control,School of Mechatronical Engineering,Beijing Institute of Technology,Beijing 100081,China Abstract In order to better estimate the instantaneous frequency of signals,the empirical mode decomposition (EMD)algorithm,proposed by Huang et al.,is used to break multi-component signals into several narrow subbands.EMD is an adaptive method and can be used to analyze nonstationary signals,so it has been widely applied to many engineering fields.However,EMD is still considered as an empirical method because it lacks a rigorous mathematical foundation,and its analysis depends largely on numerical simulations and experimental investigations.In this paper,related problems of the EMD algorithm are discussed,including its theoretical foundation and its applications.Some modified EMD algorithms are considered to overcome problems,such as stopping criterion,end effect,envelope of signals and mode aliasing.The applications of EMD to the processing of radar signals are reviewed.Some directions for further research on the EMD algorithm are suggested. Keywords empirical mode decomposition (EMD);Hilbert-Huang transform (HHT);time-frequency signal processing;radar signal processing 综述文章(Reviews )

EMD分解的流程图如下

1.什么是HHT? HHT就是先将信号进行经验模态分解(EMD分解),然后将分解后的每个IMF分量进行Hilbert变换,得到信号的时频属性的一种时频分析方法。 2.EMD分解的步骤。 EMD分解的流程图如下: 3.实例演示。 给定频率分别为10Hz和35Hz的两个正弦信号相叠加的复合信号,采样频率fs=2048Hz的信号,表达式如下:y=5sin(2*pi*10t)+5*sin(2*pi*35t) (1)为了对比,先用fft对求上述信号的幅频和相频曲线。 1.function fftfenxi 2.clear;clc; 3.N=2048; 4.%fft默认计算的信号是从0开始的 5.t=linspace(1,2,N);deta=t(2)-t(1);1/deta 6.x=5*sin(2*pi*10*t)+5*sin(2*pi*35*t); 7.% N1=256;N2=512;w1=0.2*2*pi;w2=0.3*2*pi;w3=0.4*2*pi; 8.% x=(t>=-200&t<=-200+N1*deta).*sin(w1*t)+(t>-200+N1*deta&t<=-200+N2*d eta).*sin(w2*t)+(t>-200+N2*deta&t<=200).*sin(w3*t); 9.y = x; 10.m=0:N-1; 11.f=1./(N*deta)*m;%可以查看课本就是这样定义横坐标频率范围的 12.%下面计算的Y就是x(t)的傅里叶变换数值 13.%Y=exp(i*4*pi*f).*fft(y)%将计算出来的频谱乘以exp(i*4*pi*f)得到频移 后[-2,2]之间的频谱值 14.Y=fft(y); 15.z=sqrt(Y.*conj(Y)); 16.plot(f(1:100),z(1:100)); 17.title('幅频曲线') 18.xiangwei=angle(Y);

经验模态分解EMD

经验模态分解EMD 经验模态分解是一种基于信号局部特征的信号分解方法。是一种自适应的信号分解方法 任何复杂的信号都是由简单的固有模态函数(intrinsic mode function,IMF)组成,且每一个IMF 都是相互独立的。该方法可以将风速数据时间序列中真实存在的不同尺度或趋势分量逐级分解出来,产生一系列具有相同特征尺度的数据序列,分解后的序列与风速原始数据序列相比具有更强的规律性。 EMD的基本思想认为任何复杂的信号都是由一些相互不同的、简单非正弦函数的分量信号组成。 EMD将非平稳序列分解为数目不多的IMF 分量c和一个趋势项r(残余函数),r是原序列经过逐级分离出IMF 分量后,最终剩下来的“分量”,是单调的和光滑的。 信号的EMD 分解本质上是通过求包络线对信号不断进行移动平均的迭代过程,包络线的不准确将导致信号分解的不完全。传统算法在求包络线时在信号端点处易产生飞翼现象, 即在端点处会产生过大或过小振幅, 若不先对信号进行端点延拓, EMD 分解将无法继续。 确定信号决定了交通流变化的总体趋势,不确定性干扰信号使实际交通流变化在趋势线附近呈现大小不一的波动。 信号从高到低不同频段的成分,具有不等带宽的特点,并且EMD 方法是根据信号本身固有特征的自适应分解。

EMD分解的目的是根据信号的局部时间特征尺度,按频率由高到低把复杂的非线性、非平稳信号分解为有限经验模态函数(IMF)之和 r(t)为残余函数,一般为信号的平均趋势。是非平稳函数的单调趋势项。 风速时间序列的EMD 分解步骤如下: 1)识别出信号中所有极大值点并拟合其包络线eup(t)。 2 )提取信号中的极小值点和拟合包络线elow(t),计算上下包络线的平均值m1(t)。 up low 1 ( ) ( ) ( ) 2 e t e t m t + = (1) 3)将x(t)减去m1(t)得到h1(t),将h1(t)视为新的信号x(t),重复第1)步,经过k 次筛选,直到h1(t)=x(t)?m1(t)满足IMF 条件,记c1(t)=h1(t),则c1(t)为风速序列的第1 个IMF 分量,它包含原始序列中最短的周期分量。从原始信号中分离出IMF 分量c1(t),得

经验模态分解(EMD)在地球物理资料中的应用(附MATLAB程序)

经验模态分解(EMD)在地球物理资料中的应用(附MATLAB程序) 摘要经验模态分解(EMD)是由Huang等人提出的一种新的分析非线性、非平稳信号的方法。本文研究经验模态分解原理及其在地球物理资料中的应用。首先研究经验模态分解的基本原理和算法,对地球物理资料(地震资料,重磁资料)进行EMD分解试验分析,然后研究基于...

摘  要
经验模态分解(EMD)是由Huang等人提出的一种新的分析非线性、非平稳信号的方法。本文研究经验模态分解原理及其在地球物理资料中的应用。首先研究经验模态分解的基本原理和算法,对地球物理资料(地震资料,重磁资料)进行EMD分解试验分析,然后研究基于EMD的Hilbert变换原理及其在提取地震属性信息中的应用,对实际地震时间剖面和时间切片进行EMD时频分析试验。
本文的方法研究和数据试验分析表明:经EMD分解变换得到的IMF序列是直接从原始时序数据中分离出来的,事先无需确定分解阶次,能更好反映原始数据固有的物理特性,每阶IMF序列都代表了某种特定意义的频带信息;EMD分解获得的IMF序列具有稳态性,对IMF进行Hilbert变换,就可以得到单个固有模态函数的瞬时振幅、瞬时相位和瞬时频率,这些信息可以清楚的显示信号的时频特征;EMD分析方法用于分解地球物理资料和作时频分析是有效的。
关键词:经验模态分解;地球物理;Hilbert变换;固有模态函数;时频分析
 
ABSTRACT
Empirical Mode Decomposition(EMD), which was developed by huang, is a new method to analyse nonlinear and nonstationary signals. In this paper, we study the theory of EMD and its applications in handling geophysical data. Firstly, we introduce the theory and the Methodology about EMD ,then we will use this method to analyse the geophysical information, including the g ravity anomaly data and seism’s data. Based on the EMD, we will study the theory of the Hilbert transform, and then use it to obtain the images,from which we can deal with the seism’s slice by time- frequency analysis in order to distill the seism’s information.


The studying of EMD and the data testing in this paper indicate: intrinsic mode functions(IMF) is comes from the original signal by the EMD, in this course, we need not fix on the Decomposition number and would not influenced by some men’s factors. Every intrinsic mode function stand for some given information and can reflect the

经验模态分解算法

经验模态分解 摘要——黄提出了经验模态分解(EMD)的数据处理方法,也对这种技术应用的有效性进行了讨论。许多变种算法(新的停止准则,即时版本的算法)也产生出来。数值模拟用来作经验性的评估执行单元运用于语音识别和分离方面,得出的实验结果认为这种方法是根据自适应的常数Q的滤波器组提出的。 1.介绍 近来,一种被称为EMD的新的非线性方法被黄等人提出,这种方法能够自适应的把非平稳信号分解成一系列零均值的AMFM信号(调频调幅) 的总和。尽管这种方法经常有着显著的效果,但是这个方法在算法方面的定义是困难的,因此这种方法没有作为一种分析方法得到承认,一般一种分析方法是需要有理论分析和性能评估。因此本文的目的是用实验的方式使得该算法更容易理解,并且提出了基于原算法的各种各样的改进的算法。设置实验性能评估的许多初始条件是为了获取一种有效的分解并且使得该算法更容易理解。 2.EMD基础 EMD的出发点是把信号内的震荡看作是局部的。实际上,如果我们要看评估信号x(t)的2个相邻极值点之间的变化(2个极小值,分别在t-和t+处),我们需要定义一个(局部)高频成分{d(t),t-<=t<=t+}(局部细节),这个高频成分与震荡相对应,震荡在2个极小值之间并且通过了极大值(肯定出现在2极小值之间)。为了完整这个图形,我们还需要定义一个(局部)低频成分m(t)(局部趋势),这样x(t)=m(t)+d(t),(t-<=t<=t+)。对于整个信号的所有震动成分,如果我们能够找到合适的方法进行此类分解,这个过程可以应用于所有的局部趋势的残余成分,因此一个信号的构成成分能够通过迭代的方式被抽离出来。 对于一个给定的信号x(t),进行有效的EMD分解步骤如下: 1)找出想x(t)的所有极值点 2)用插值法对极小值点形成下包络emint(t),对极大值形成上包络emax(t) 3)计算均值m(t)=(emint(t)+emax(t))/2 4)抽离细节d(t)=x(t)-m(t) 5)对残余的m(t)重复上诉步骤 在实际中,上述过程需要通过一个筛选过程进行重定义,筛选过程的第一个迭代步骤是对细节信号d(t)重复从1-4步,直到d(t)的均值是0,或者满足某种停止准则才停止迭代。一旦满足停止准则,此时的细节信号d(t)就被称为IMF,d(t)对应残量信号用第5步计算。通过以上过程,极值点的数量伴随着残量信号的产生而越来越少,整个分解过程会产生有限个模函数(IMF)。 模函数和残量信号可以进行谱分析,但是这个谱分析不能从狭隘的角度来看。首先,需要强调一下,即使是谐振荡,应用上述方法产生的高频和低频也只是局部的,没办法产生一个预设的频带过滤(例如小波变换)进行辨识。选择的模函数对应了一个自适应(依赖于信号自身的)的时变滤波器。一个这方面的例子:一个信号由3个部分组成(这3个部分是时间频率上都明显叠加的信号),用上述方法成功的分解了。分解如图1所示。这个例子的程序是emd_fmsin2.m 另外一个例子(emd_sawtooth.m)强调了EMD潜在的非谐振性质如图2所示。在这些例子中,线性的非线性的震荡都能被有效的识别和分离。因而,任何谐振分析(傅里叶,小波,…)可能结束在同类文章中,更少的紧凑和更少的实际意义的分解。 3.算法的改进 正如第二部分所定义的,EMD算法依赖于一系列的选项,这些选项需要用户控制,并且需要专业的知识。在此我们的目的找出更准确的选项,并且给予原来的算法进行改进。3.1采样率,插值方法和边缘效应

经验模态分解(EEMD)、Fourier变换、HHT

10总体经验模态分解(EEMD)、Fourier变换、HHT EEMD实际就是噪声分析法和EMD方法的结合,抑制模态混叠。 Fourier变换是将任何信号分解为正弦信号的加权和,而每一个正弦信号对应着一个固定的频率(Fourier频率)和固定的幅值,因此,用Fourier 变换分析频率不随时间变化的平稳信号是十分有效的。但对于频率随时间变化的非平稳信号,Fourier 变换就无能为力了。 HHT是历史上首次对Fourier变换的基本信号和频率定义作的创造性的改进。他们不再认为组成信号的基本信号是正弦信号,而是一种称为固有模态函数的信号,也就是满足以下两个条件的信号: (1) 整个信号中,零点数与极点数相等或至多相差1 ; (2) 信号上任意一点,由局部极大值点确定的包络线和由局部极小值点确定的包络线的均值均为零,即信号关于时间轴局部对称。 无论Hilbert谱中的频率还是边际谱中的频率(即瞬时频率) ,其意义都与Fourier分析中的频率(即Fourier 频率) 完全不同,但在Fourier分析中,某一频率处能量的存在,代表一个正弦或余弦波在整个时间轴上的存在,而边际谱h中某一频率处能量的存在仅代表在整个时间轴上可能有这样一个频率的振动波在局部出现过,h越大,代表该频率出现的可能性越大。 11、HHT时频灰度谱转黑白谱 MATLAB作HHT时频谱时出来的是彩色的时频图。请问有办法在MATLAB上面将彩色谱图调成白色底黑色线的黑白图吗哎,因为老师说彩色图普通印出来的话不好看,一片黑的,谢谢大家啊 答:后面加上这个就可以了colormap(flipud(gray)) 12、HHT谱图怎么会这样呢 小弟刚刚接触HHT,也不是学信号的,只是用HHT这个工具处理信号,在处理过程中遇到了这样的问题: 对实测信号直接EMD,然后作HHT谱图如下:

经验模态分解算法中端点问题的处理(1)

x=[0 30 60 90 120 150 180 210 240 270 300 330 360]; y=[-0.0167 -1.0927 -1.8725 -2.3586 -2.3061 -1.9576 -0.9574 -0.0080 0.8896 1.3877 1.1139 0.8517 -0.0167]; fun=@(a,t) a(1)+a(2)*sind(t+a(3)) %matlab7.0以上版本,否则用inline %fun=inline('a(1)+a(2)*sind(t+a(3))','a','t') a0=[-0.5 -1.9 -0.079]; a=nlinfit(x,y,fun,a0) t=0:5:360; yf=fun(a,t); plot(x,y,'o',t,yf) 结果: fun = @(a,t) a(1)+a(2)*sind(t+a(3)) a = -0.5239 -1.8995 -14.2382

经验模态分解算法中端点问题的处理 摘要:经验模态分解(EMD)方法就是对非线性、非平稳信号运用时间区域序列的上下包络线的均值得到瞬时平衡位置,将被分析信号分解成一组相互独立的稳态和线性的固有模态函数(IMF)数集。经验模态分解(EMD)方法是基于原始信号本事出发,经过筛选先把频率高的IMF 分量分离出来,然后在分离频率较低的IMF分量。其实质就是利用时间特征尺度来获取原始信号数据中的振荡模态,本文对经验模态分解算法中端点问题的处理进行研究。 关键词:经验模态分解算法端点函数 经验模态分解(EMD)方法被提出后在各个领域普遍的应用,其具有直观、简单、自适应、完备性和正交性以及调制特性等一系列良好的特点。 (1)自适应性 经验模态分解(EMD)方法的自适应性表现为自适应生成基函数。在整个筛选分解过程中

经验模态分解

经验模态分解(Empirical Mode Decomposition,简称EMD) 对数据信号进行EMD分解就是为了获得本征模函数,因此,在介绍EMD分析方法的 具体过程之前,有必要先介绍EMD分解过程中所涉及的基本概念的定义:本征模函数,这是掌握EMD方法的基础。 本征模函数 在物理上,如果瞬时频率有意义,那么函数必须是对称的,局部均值为零,并且具有 相同的过零点和极值点数目。在此基础上,NordneE.Hunag等人提出了本征模函数(Intrinsic Mode Function,简称IMF)的概念。本征模函数任意一点的瞬时频率都是 有意义的。Hunag等人认为任何信号都是由若干本征模函数组成,任何时候,一个信 号都可以包含若干个本征模函数,如果本征模函数之间相互重叠,便形成复合信号。EMD分解的目的就是为了获取本征模函数,然后再对各本征模函数进行希尔伯特变换,得到希尔伯特谱。 Hunag认为,一个本征模函数必须满足以下两个条件: ⑴l函数在整个时间范围内,局部极值点和过零点的数目必须相等,或最多相差一个; ⑵在任意时刻点,局部最大值的包络(上包络线)和局部最小值的包络(下包络线) 平均必须为零。 第一个条件是很明显的,它与传统的平稳高斯信号的窄带要求类似。对于第二个条件,是一个新的概念,它把经典的全局性要求修改为局部性要求,使瞬时频率不再受不对 称波形所形成的不必要的波动所影响。实际上,这个条件应为“数据的局部均值是零”。但是对于非平稳数据来说,计算局部均值涉及到“局部时间尺度”的概念,而 这是很难定义的。因此,在第二个条件中使用了局部极大值包络和局部极小值包络的 平均为零来代替,使信号的波形局部对称。Huang等人研究表明,在一般情况下,使 用这种代替,瞬时频率还是符合所研究系统的物理意义。本征模函数表征了数据的内 在的振动模式。由本征模函数的定义可知,由过零点所定义的本征模函数的每一个振 动周期,只有一个振动模式,没有其他复杂的骑波;一个本征模函数没有约束为是一 个窄带信号,并且可以是频率和幅值的调制,还可以是非稳态的;单由频率或单由幅 值调制的信号也可成为本征模函数。 EMD方法的分解过程 由于大多数所有要分析的数据都不是本征模函数,在任意时间点上,数据可能包含多 个波动模式,这就是简单的希尔伯特变换不能完全表征一般数据的频率特性的原因。 于是需要对原数据进行EMD分解来获得本征模函数。

EMD经验模态分解

EMD ?①分解得到的IMF分量是基于序列(信号)本身的局部的特征时间尺度,各个分量表征了原序列不同时间尺度(或频率)的振荡变化,趋势项集中反映了序列的非平稳性,在一定程度上表现原序列的总趋势; ?②瞬时频率ω(t)作为时间的函数,能敏锐地识别出资料的多尺度嵌套结构。 ?③Hilbert谱是由每个IMF分量经过Hilbert变换得到的,因而具有明确的物理意义,反映了物理过程的能量(振幅)‐频率‐时间的分布。

?EMD分解方法是基于以下假设条件: ?⑴数据至少有两个极值,一个最大值和一个最小值; ?⑵数据的局部时域特性是由极值点间的时间尺度唯一确定; ?⑶如果数据没有极值点但有拐点,则可以通过对数据微分一次或多次求得极值,然后再通过积分来获得分解结果。 它能用几个内在的本征模态和一个剩余来揭示序列的振荡结构特征和非平稳性;用谱图准确地给出原序列及其IMF分量的主要振幅变化所对应的频率和时间;在处理强间歇性信号以及短数据序列方面有很好的效果。 瞬时频率 ?它的频率是随时间改变的,即叫ωj(t) ?对于任一时间连续函数X(t),其Hilbert变换Y(t)定义为: 上式表示X(t)与1/t的卷积,Hilbert变换强调X(t)的局部性。定义式上可以看出Hilbert变换是从时域到时域的变换。 ?构造解析信号Z(t)

?用幅角的时间导数来定义瞬时频率: 瞬时频率是ω=ω(t)是时间的单值函数。 ?瞬时频率把信号限定为“窄带”,即极大点(极小点)的数目与穿 零点的数目相等。 为了使瞬时频率具有物理意义,必须加上约束条件,下面举正弦波的例子来说明这个约束条件的含义。正弦函数写成: X(t)=sin t 它的Hilbert变换是cos t,在x-y平面的相点图1.1(a)中的单位圆,相函数是1.1(b)中的直线,瞬时频率是1.1(c)所示,是一个常数。

相关主题
文本预览
相关文档 最新文档