|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
function imf = TryEmd(ip)
%--------------------------------------------------------------------------
% Designer:万学功
N=length(ip);
x=1:N;
[max,max_No,min,min_No]=MaxMin(ip);
% Released Time:2007-6-21
% Email:bigbomb825826@yahoo.com
% Department:江苏大学机械工程学院测控技术研究所
%--------------------------------------------------------------------------
%----函数说明(152):
% 输入ip--待分解数据序列,一维列向量;
% 输出imf--分解后得到的IMF分量,二维数组表示;
%--------------------------------------------------------------------------
%----调用函数:
% Enovelope--次端点镜像法求解上、下包络线;(39)
% MaxMin--求局部极值点及其位置;(24)
% MaxMax--求数组极大值;(6)
% ZeroNum--求过零点数目;(17)
%--------------------------------------------------------------------------
%----参数设置:
PRE_yuzhi=0.005; %--偏差阈值;
NUM1=5; %--分解得到IMF分量的最多数目;
NUM2=800; %--提取IMF分量的最多筛分次数;
%--------------------------------------------------------------------------
flag=0;
I=0;
num1=0;
num2=0;
while(max_No(1)~=0 && min_No(1)~=0)
if(num1>=NUM1) break; end
while(1)
num2=num2+1;
[yy1,yy2]=enovelope(x,max,max_No,min,min_No);
mean=(yy1+yy2)/2;
h1=ip-mean;
[max,max_No,min,min_No]=MaxMin(h1);
if(max_No(1)==0 || min_No(1)==0)
flag=1;
break;
end
[yy1,yy2]=enovelope(x,max,max_No,min,min_No);
mean=(yy1+yy2)/2;
hmax=MaxMax(mean);
N1=ZeroNum(h1);
tiaojian1=hmax-PRE_yuzhi;
tiaojian2=abs(length(max_No)+length(min_No)-N1);
if((tiaojian1<0 && tiaojian2<=1) || num2<=NUM2)
I=I+1;
imf(I,:)=h1;
break;
else
ip1=h1;
[max,max_No,min,min_No]=MaxMin(ip1);
end
end
if(flag==1)
flag=0;
break;
else
ip=ip-imf(I,:);
num1=I;
[max,max_No,min,min_No]=MaxMin(ip);
end
end
imf(I+1,:)=ip;
我看过之后有几处不大明白
1 在程序中是怎么体现中止条件的也就是SD(0.2和0.3之间)。
2 在程序中用的控制循环的条件是max_No(1)~=0 && min_No(1)~=0 请问这个式子的含义是什么? 为什么要用它做循环条件
max_No(1)有没有更深刻的含义?
我十分期待与您交流!!
谢谢!! |
|