dnj0306 发表于 2006-2-27 15:04

有没有能用的EMD程序!!!

本人急需EMD的程序!如有哪位高人提供,将感激不尽!

[ 本帖最后由 zhangnan3509 于 2007-6-22 14:59 编辑 ]

simon21 发表于 2006-2-27 20:48

用Matlab仿真D/A
http://forum.vibunion.com/thread-1355-1-1.html
四楼

simon21 发表于 2006-2-27 21:14

其中缺少的extr试试下面的代码
%extr
function =extr(x)
=uigetfile('*.txt','输入信号');
watchon;

FILENAME=;
x=load(FILENAME);

numzer=1;
nummin=1;
nummax=1;
for g=2:(length(x)-1)

if (x(g-1)*x(g)<0)|(x(g-1)*x(g)==0)&(x(g-1)==0)
indzer(numzer)=g-1;
numzer=numzer+1;
elseif (x(g-1)*x(g)<0)|(x(g-1)*x(g)==0)&(x(g)==0)
indzer(numzer)=g;
numzer=numzer+1;
elseif (x(g-1)*x(g)<0)|(x(g-1)*x(g)==0)&(x(g-1)~=0)&(x(g)~=0)
indzer(numzer)=(2*g-1)/2;
numzer=numzer+1;
end

if (x(g-1)>x(g))&(x(g)>x(g+1))
continue;
elseif (x(g-1)>x(g))&(x(g) indmin(nummin)=g;
nummin=nummin+1;
elseif (x(g-1) continue;
elseif (x(g-1)x(g+1))
indmax(nummax)=g;
nummax=nummax+1;
end
end
%subplot(2,3,1)
plot(indzer,x(indzer),'r-+')
title('indzer')
pause
% subplot(2,3,2)
plot(indmin,x(indmin),'b-o')
title('indmin')
pause
%subplot(2,3,3)
plot(indmax,x(indmax),'g-*')
title('indmax')
pause
%subplot(2,3,4)
plot(1:length(x),x,'k-s')
title('x')
pause

envmax = interp1(indmax,x(indmax),1:length(x),'spline');
envmin = interp1(indmin,x(indmin),1:length(x),'spline');
%subplot(2,3,5)
plot(1:length(x),envmin,'y-d')
title('envmin')
pause
%subplot(2,3,6)
plot(1:length(x),envmax,'c-h')
title('envmax')
pause
plot(1:length(x),mean((envmax+envmin)/2),'m-p')
title('mean((envmax+envmin)/2)')%extr
function =extr(x)
=uigetfile('*.txt','输入信号');
watchon;

FILENAME=;
x=load(FILENAME);

numzer=1;
nummin=1;
nummax=1;
for g=2:(length(x)-1)

if (x(g-1)*x(g)<0)|(x(g-1)*x(g)==0)&(x(g-1)==0)
indzer(numzer)=g-1;
numzer=numzer+1;
elseif (x(g-1)*x(g)<0)|(x(g-1)*x(g)==0)&(x(g)==0)
indzer(numzer)=g;
numzer=numzer+1;
elseif (x(g-1)*x(g)<0)|(x(g-1)*x(g)==0)&(x(g-1)~=0)&(x(g)~=0)
indzer(numzer)=(2*g-1)/2;
numzer=numzer+1;
end

if (x(g-1)>x(g))&(x(g)>x(g+1))
continue;
elseif (x(g-1)>x(g))&(x(g) indmin(nummin)=g;
nummin=nummin+1;
elseif (x(g-1) continue;
elseif (x(g-1)x(g+1))
indmax(nummax)=g;
nummax=nummax+1;
end
end
%subplot(2,3,1)
plot(indzer,x(indzer),'r-+')
title('indzer')
pause
% subplot(2,3,2)
plot(indmin,x(indmin),'b-o')
title('indmin')
pause
%subplot(2,3,3)
plot(indmax,x(indmax),'g-*')
title('indmax')
pause
%subplot(2,3,4)
plot(1:length(x),x,'k-s')
title('x')
pause

envmax = interp1(indmax,x(indmax),1:length(x),'spline');
envmin = interp1(indmin,x(indmin),1:length(x),'spline');
%subplot(2,3,5)
plot(1:length(x),envmin,'y-d')
title('envmin')
pause
%subplot(2,3,6)
plot(1:length(x),envmax,'c-h')
title('envmax')
pause
plot(1:length(x),mean((envmax+envmin)/2),'m-p')
title('mean((envmax+envmin)/2)')%extr
function =extr(x)
=uigetfile('*.txt','输入信号');
watchon;

FILENAME=;
x=load(FILENAME);

numzer=1;
nummin=1;
nummax=1;
for g=2:(length(x)-1)

if (x(g-1)*x(g)<0)|(x(g-1)*x(g)==0)&(x(g-1)==0)
indzer(numzer)=g-1;
numzer=numzer+1;
elseif (x(g-1)*x(g)<0)|(x(g-1)*x(g)==0)&(x(g)==0)
indzer(numzer)=g;
numzer=numzer+1;
elseif (x(g-1)*x(g)<0)|(x(g-1)*x(g)==0)&(x(g-1)~=0)&(x(g)~=0)
indzer(numzer)=(2*g-1)/2;
numzer=numzer+1;
end

if (x(g-1)>x(g))&(x(g)>x(g+1))
continue;
elseif (x(g-1)>x(g))&(x(g) indmin(nummin)=g;
nummin=nummin+1;
elseif (x(g-1) continue;
elseif (x(g-1)x(g+1))
indmax(nummax)=g;
nummax=nummax+1;
end
end
%subplot(2,3,1)
plot(indzer,x(indzer),'r-+')
title('indzer')
pause
% subplot(2,3,2)
plot(indmin,x(indmin),'b-o')
title('indmin')
pause
%subplot(2,3,3)
plot(indmax,x(indmax),'g-*')
title('indmax')
pause
%subplot(2,3,4)
plot(1:length(x),x,'k-s')
title('x')
pause

envmax = interp1(indmax,x(indmax),1:length(x),'spline');
envmin = interp1(indmin,x(indmin),1:length(x),'spline');
%subplot(2,3,5)
plot(1:length(x),envmin,'y-d')
title('envmin')
pause
%subplot(2,3,6)
plot(1:length(x),envmax,'c-h')
title('envmax')
pause
plot(1:length(x),mean((envmax+envmin)/2),'m-p')
title('mean((envmax+envmin)/2)')%extr
function =extr(x)
=uigetfile('*.txt','输入信号');
watchon;

FILENAME=;
x=load(FILENAME);

numzer=1;
nummin=1;
nummax=1;
for g=2:(length(x)-1)

if (x(g-1)*x(g)<0)|(x(g-1)*x(g)==0)&(x(g-1)==0)
indzer(numzer)=g-1;
numzer=numzer+1;
elseif (x(g-1)*x(g)<0)|(x(g-1)*x(g)==0)&(x(g)==0)
indzer(numzer)=g;
numzer=numzer+1;
elseif (x(g-1)*x(g)<0)|(x(g-1)*x(g)==0)&(x(g-1)~=0)&(x(g)~=0)
indzer(numzer)=(2*g-1)/2;
numzer=numzer+1;
end

if (x(g-1)>x(g))&(x(g)>x(g+1))
continue;
elseif (x(g-1)>x(g))&(x(g) indmin(nummin)=g;
nummin=nummin+1;
elseif (x(g-1) continue;
elseif (x(g-1)x(g+1))
indmax(nummax)=g;
nummax=nummax+1;
end
end
%subplot(2,3,1)
plot(indzer,x(indzer),'r-+')
title('indzer')
pause
% subplot(2,3,2)
plot(indmin,x(indmin),'b-o')
title('indmin')
pause
%subplot(2,3,3)
plot(indmax,x(indmax),'g-*')
title('indmax')
pause
%subplot(2,3,4)
plot(1:length(x),x,'k-s')
title('x')
pause

envmax = interp1(indmax,x(indmax),1:length(x),'spline');
envmin = interp1(indmin,x(indmin),1:length(x),'spline');
%subplot(2,3,5)
plot(1:length(x),envmin,'y-d')
title('envmin')
pause
%subplot(2,3,6)
plot(1:length(x),envmax,'c-h')
title('envmax')
pause
plot(1:length(x),mean((envmax+envmin)/2),'m-p')
title('mean((envmax+envmin)/2)')%extr
function =extr(x)
=uigetfile('*.txt','输入信号');
watchon;

FILENAME=;
x=load(FILENAME);

numzer=1;
nummin=1;
nummax=1;
for g=2:(length(x)-1)

if (x(g-1)*x(g)<0)|(x(g-1)*x(g)==0)&(x(g-1)==0)
indzer(numzer)=g-1;
numzer=numzer+1;
elseif (x(g-1)*x(g)<0)|(x(g-1)*x(g)==0)&(x(g)==0)
indzer(numzer)=g;
numzer=numzer+1;
elseif (x(g-1)*x(g)<0)|(x(g-1)*x(g)==0)&(x(g-1)~=0)&(x(g)~=0)
indzer(numzer)=(2*g-1)/2;
numzer=numzer+1;
end

if (x(g-1)>x(g))&(x(g)>x(g+1))
continue;
elseif (x(g-1)>x(g))&(x(g) indmin(nummin)=g;
nummin=nummin+1;
elseif (x(g-1) continue;
elseif (x(g-1)x(g+1))
indmax(nummax)=g;
nummax=nummax+1;
end
end
%subplot(2,3,1)
plot(indzer,x(indzer),'r-+')
title('indzer')
pause
% subplot(2,3,2)
plot(indmin,x(indmin),'b-o')
title('indmin')
pause
%subplot(2,3,3)
plot(indmax,x(indmax),'g-*')
title('indmax')
pause
%subplot(2,3,4)
plot(1:length(x),x,'k-s')
title('x')
pause

envmax = interp1(indmax,x(indmax),1:length(x),'spline');
envmin = interp1(indmin,x(indmin),1:length(x),'spline');
%subplot(2,3,5)
plot(1:length(x),envmin,'y-d')
title('envmin')
pause
%subplot(2,3,6)
plot(1:length(x),envmax,'c-h')
title('envmax')
pause
plot(1:length(x),mean((envmax+envmin)/2),'m-p')
title('mean((envmax+envmin)/2)')%extr
function =extr(x)
=uigetfile('*.txt','输入信号');
watchon;

FILENAME=;
x=load(FILENAME);

numzer=1;
nummin=1;
nummax=1;
for g=2:(length(x)-1)

if (x(g-1)*x(g)<0)|(x(g-1)*x(g)==0)&(x(g-1)==0)
indzer(numzer)=g-1;
numzer=numzer+1;
elseif (x(g-1)*x(g)<0)|(x(g-1)*x(g)==0)&(x(g)==0)
indzer(numzer)=g;
numzer=numzer+1;
elseif (x(g-1)*x(g)<0)|(x(g-1)*x(g)==0)&(x(g-1)~=0)&(x(g)~=0)
indzer(numzer)=(2*g-1)/2;
numzer=numzer+1;
end

if (x(g-1)>x(g))&(x(g)>x(g+1))
continue;
elseif (x(g-1)>x(g))&(x(g) indmin(nummin)=g;
nummin=nummin+1;
elseif (x(g-1) continue;
elseif (x(g-1)x(g+1))
indmax(nummax)=g;
nummax=nummax+1;
end
end
%subplot(2,3,1)
plot(indzer,x(indzer),'r-+')
title('indzer')
pause
% subplot(2,3,2)
plot(indmin,x(indmin),'b-o')
title('indmin')
pause
%subplot(2,3,3)
plot(indmax,x(indmax),'g-*')
title('indmax')
pause
%subplot(2,3,4)
plot(1:length(x),x,'k-s')
title('x')
pause

envmax = interp1(indmax,x(indmax),1:length(x),'spline');
envmin = interp1(indmin,x(indmin),1:length(x),'spline');
%subplot(2,3,5)
plot(1:length(x),envmin,'y-d')
title('envmin')
pause
%subplot(2,3,6)
plot(1:length(x),envmax,'c-h')
title('envmax')
pause
plot(1:length(x),mean((envmax+envmin)/2),'m-p')
title('mean((envmax+envmin)/2)')

dnj0306 发表于 2006-3-2 18:21

谢谢了!非常感谢!!

xinquan 发表于 2006-4-6 11:00

请问dnj0306,你也在做HHT方面的研究吗?
我现在也在做,可否向你学习一下。

sunsun1212 发表于 2011-5-22 18:00

学习了,有简单的代码吗?楼上的好乱啊
页: [1]
查看完整版本: 有没有能用的EMD程序!!!