z397521451
发表于 2012-5-22 10:02
楼主求回答啊你的eemd分解到HHT变换的程序,类似我上面发的EMD分解那种
梦泉
发表于 2012-5-22 13:59
回复 31 # z397521451 的帖子
data为原始数据。
x=data(1:10000);
fs=25600;
imf=eemd(x,0.2,50);
=hhspectrum(imf(1:end-1,:));
=toimage(insA,insf,inst,400);
disp_hhs(E,imt,-20,fs);%希尔伯特谱
for k=1:size(E,1)
bjp(k)=sum(E(k,:))*1/fs;
end
figure('numbertitle','off','name','Boundary Spectrum');
plot(Cenf(1,:)*fs,bjp);% 作边际谱图xlabel('f / Hz');
ylabel('A');
title('Boundary Spectrum')
yghit08
发表于 2012-6-14 21:00
回复 9 # 梦泉 的帖子
你看看这个帖子
http://forum.vibunion.com/thread-117510-1-1.html
jiaguangfei
发表于 2012-7-14 13:28
谢谢梦泉
angelgy880505
发表于 2012-7-16 16:01
回复 15 # 梦泉 的帖子
请问Hilbert谱的作用是什么?如何根据它来进行信号分析?
刚接触HHT,请赐教。
angelgy880505
发表于 2012-7-18 19:31
回复 35 # angelgy880505 的帖子
刚看了你的回帖,清楚了一点点,谢谢
vera吧噗
发表于 2012-8-15 10:06
回复 15 # 梦泉 的帖子
不知道你这个回复里提到的“求出来的瞬时频率是归一化的”指的是用hhspectrum.m求instantaneous amplitudes 和 instantaneous frequencies过程中调用的instfreq.m函数吗?
我的instfreq.m用的是论坛一个帖子给出的程序,如下,不知和你是不是一个程序。
PS.请教一下为什么要进行归一化,有没有不进行归一化的instfreq程序呢?多谢!
function =instfreq(x,t,L,trace);
%INSTFREQ Instantaneous frequency estimation.
% =INSTFREQ(X,T,L,TRACE) computes the instantaneous
% frequency of the analytic signal X at time instant(s) T, using the
% trapezoidal integration rule.
% The result FNORMHAT lies between 0.0 and 0.5.
%
% X : Analytic signal to be analyzed.
% T : Time instants (default : 2:length(X)-1).
% L : If L=1, computes the (normalized) instantaneous frequency
% of the signal X defined as angle(X(T+1)*conj(X(T-1)) ;
% if L>1, computes a Maximum Likelihood estimation of the
% instantaneous frequency of the deterministic part of the signal
% blurried in a white gaussian noise.
% L must be an integer (default : 1).
% TRACE : if nonzero, the progression of the algorithm is shown
% (default : 0).
% FNORMHAT : Output (normalized) instantaneous frequency.
% T : Time instants.
%
% Examples :
% x=fmsin(70,0.05,0.35,25); =instfreq(x); plot(t,instf)
% N=64; SNR=10.0; L=4; t=L+1:N-L; x=fmsin(N,0.05,0.35,40);
% sig=sigmerge(x,hilbert(randn(N,1)),SNR);
% plotifl(t,); grid;
% title ('theoretical and estimated instantaneous frequencies');
%
% See alsoKAYTTH, SGRPDLAY.
% F. Auger, March 1994, July 1995.
% Copyright (c) 1996 by CNRS (France).
%
% ------------------- CONFIDENTIAL PROGRAM --------------------
% This program can not be used without the authorization of its
% author(s). For any comment or bug report, please send e-mail to
% f.auger@ieee.org
if (nargin == 0),
error('At least one parameter required');
end;
= size(x);
if (xcol~=1),
error('X must have only one column');
end
if (nargin == 1),
t=2:xrow-1; L=1; trace=0.0;
elseif (nargin == 2),
L = 1; trace=0.0;
elseif (nargin == 3),
trace=0.0;
end;
if L<1,
error('L must be >=1');
end
= size(t);
if (trow~=1),
error('T must have only one row');
end;
if (L==1),
if any(t==1)|any(t==xrow),
error('T can not be equal to 1 neither to the last element of X');
else
fnormhat=0.5*(angle(-x(t+1).*conj(x(t-1)))+pi)/(2*pi);
end;
else
H=kaytth(L);
if any(t<=L)|any(t+L>xrow),
error('The relation L<T<=length(X)-L must be satisfied');
else
for icol=1:tcol,
if trace, disprog(icol,tcol,10); end;
ti = t(icol); tau = 0:L;
R = x(ti+tau).*conj(x(ti-tau));
M4 = R(2:L+1).*conj(R(1:L));
diff=2e-6;
tetapred = H * (unwrap(angle(-M4))+pi);
while tetapred<0.0 , tetapred=tetapred+(2*pi); end;
while tetapred>2*pi, tetapred=tetapred-(2*pi); end;
iter = 1;
while (diff > 1e-6)&(iter<50),
M4bis=M4 .* exp(-j*2.0*tetapred);
teta = H * (unwrap(angle(M4bis))+2.0*tetapred);
while teta<0.0 , teta=(2*pi)+teta; end;
while teta>2*pi, teta=teta-(2*pi); end;
diff=abs(teta-tetapred);
tetapred=teta; iter=iter+1;
end;
fnormhat(icol,1)=teta/(2*pi);
end;
end;
end;
ckakaqiang
发表于 2012-8-26 15:58
回复 1 # 梦泉 的帖子
你好,请问使用论坛里的函数有出现每个模态的迭代次数很多的情况吗?
deadrain
发表于 2012-8-31 17:24
{:3_47:}
天涯青驹
发表于 2013-4-8 09:59
{:{39}:}
白蓝
发表于 2013-4-28 22:00
本帖最后由 白蓝 于 2013-4-28 22:11 编辑
诸福磊等编写《机械故障诊断中的现代信号处理方法》中关于Hilbert谱matlab程序
Temp=min(round((Temp/MaxFreq)*NumFreq)+1,NumFreq);
for k=1:nImf-1
for n=1:SigLen
Spectrum(Temp(k,n),n)=Spectrum(Temp(k,n),n)+AmpSpectrum(k,n);
end
end
这儿实在是不明白啊!说是计算Hilbert谱的,但是求Hilbert谱的公式要求和、要积分、还有e,但是这段程序时都没有呀!
freq=(angle(-x(2:SigLen).*conj(x(1:SigLen-1)))+pi)/(2*pi);
这条语句没看明白,这条语句目的是求信号的瞬时频率,瞬时频率是相位函数倒数再除以2pi ,但是怎么看这个表达式都不像是求瞬时频率的。被卡在这儿了,大恩不言谢!
王虎
发表于 2013-9-3 20:54
求EEMD程序的改进方法!!!
chybeyond
发表于 2013-9-4 09:28
不知道你用EEMD做Hilb谱时候有没有后处理
春田花花
发表于 2013-9-8 11:22
梦泉 发表于 2012-4-17 20:18 static/image/common/back.gif
回复 3 # syxqq123 的帖子
另外,使用诸福磊等编写《机械故障诊断中的现代信号处理方法》中关于Hilbert谱m ...
诸福磊老师的程序貌似不全吧!
我爱振动
发表于 2014-2-26 08:52
梦泉 发表于 2012-4-17 20:18
回复 3 # syxqq123 的帖子
另外,使用诸福磊等编写《机械故障诊断中的现代信号处理方法》中关于Hilbert谱m ...
C:\Users\Lenovo\Desktop你好我我用eemd做Hilbert-huang 谱的时候出现这种情况 什么原因呢?