查看: 716|回复: 8|关注: 0
打印 上一主题 下一主题

[已解决] 如何使用MATLAB对HHT的结果求取边际谱?

[复制链接]

新手

15 麦片

财富积分


050


3

主题

43

帖子

1

最佳答案
本帖最后由 一叶而知秋 于 2019-6-27 19:45 编辑

最近在使用HHT对信号进行处理,利用MATLAB自带的EMD和hht函数可以求取IMF以及瞬时频率和能量,如下所示:
%% 求取IMF和残差
[imf,residual,info] = emd(signal,'Interpolation','pchip', 'Display', 0);
%% 对IMF进行hht分析可以得到希尔伯特谱,瞬时频率等信息
[HS,F,T,IMFINSF,IMFINSE]=hht(imf,fs);

我的需求是:如何基于上述信息得到Marginal Hilbert Spectrum边际谱呢?

在网上找到了一个mhs.m文件,但是运行出错,错误信息如下:
错误使用 embedded.quantizer/quantizenumeric
Unable to check out a license for the Fixed-Point Designer.
出错 embedded.quantizer/quantize (line 44)
? ?? ?x = q.quantizenumeric(x);
出错 mhs (line 40)
? ? freq = quantize(q,freq);
出错 Margin (line 17)
[A F] = mhs(hs,F,1,0.5,25)

附件为网上找到的mhs.m文件,请广大网友提供帮助,如何得到边际谱?

license.txt

1.29 KB, 下载次数: 2

license.txt

mhs.m

1.96 KB, 下载次数: 5

mhs.m

新手

5 麦片

财富积分


050


4

主题

17

帖子

0

最佳答案
  • 关注者: 1
2#
发表于 2019-6-29 10:17:37 | 只看该作者
emd现在落后了,现在研究广义经验模式分解。你哪个学校的?知网上有,作者陈根,广义经验模式分解的齿轮断齿故障分析,极值点分组模式分解的齿轮局部断齿故障试验_陈根,三次样条极值点插值与小波滤波在齿轮局部断齿故障诊断中应用_陈根

新手

15 麦片

财富积分


050


3

主题

43

帖子

1

最佳答案
3#
?楼主| 发表于 2019-6-29 10:49:50 | 只看该作者
夜幕下的辉煌 发表于 2019-6-29 10:17
emd现在落后了,现在研究广义经验模式分解。你哪个学校的?知网上有,作者陈根,广义经验模式分解的齿轮断齿 ...

1、您说的很有道理,EMD作为最早的经验模态分解方法固然存在很多不足,后期也有很多改进的版本,比如EEMD、BS-EMD等等,我的代码里仅仅将EMD作为示例,随时可以更换的。
2、大致浏览了您推荐的三篇论文,对EMD做了改进然后检测齿轮故障。我注意到文中多次对IMF进行频率分析,难道使用的是快速傅里叶变换FFT?如果仅使用FFT进行频率分析而不涉及其他,如Hilbert Spectrum、instantaneous frequencies、instantaneous energy,那么对原始信号的分解还有必要吗?使用FFT不是也可以直接得到频率信号吗?
3、无论是使用哪一种分解方法,其目的都是得到IMF以及Hilbert Spectrum,那么如何根据IMF和Hilbert Spectrum,或者还有其他的变量,得到Marginal Hilbert Spectrum是我想要学习的。

请问,您能帮我解答一下吗,谢谢?

新手

15 麦片

财富积分


050


3

主题

43

帖子

1

最佳答案
4#
?楼主| 发表于 2019-6-29 18:28:02 | 只看该作者
难道就没人遇到这一问题吗?:lol

新手

5 麦片

财富积分


050


4

主题

17

帖子

0

最佳答案
  • 关注者: 1
5#
发表于 2019-6-30 10:57:00 | 只看该作者
1.GEMD不是简单的对EMD进行改进,而是对EMD的推广发展。GEMD得到了EMD的滤波本质,得到了为什么会有模式混叠,得到了前后IMF之间的频带关系。当然,文章中没有GEMD的数学原理,GEMD的数学原理公式在我的硕士毕业论文里。
2.直接进行FFt分析得到的频谱不太理想,有噪声等干扰。
3.有时候用EMD不一定就用HHT,不一定非要进行包络谱分析。

新手

15 麦片

财富积分


050


3

主题

43

帖子

1

最佳答案
6#
?楼主| 发表于 2019-7-1 16:16:34 | 只看该作者
夜幕下的辉煌 发表于 2019-6-30 10:57
1.GEMD不是简单的对EMD进行改进,而是对EMD的推广发展。GEMD得到了EMD的滤波本质,得到了为什么会有模式混 ...

原来阁下就是论文作者,佩服佩服。
硕士期间竟能发表好几篇高质量的文章,厉害厉害。
既然您功底如此深厚,请赐教如何求取边际谱?

新手

11 麦片

财富积分


050


2

主题

10

帖子

1

最佳答案
  • 关注者: 1
7#
发表于 2019-7-3 10:53:20 | 只看该作者 |此回复为最佳答案
我也是在学习这个方面,我自己是这样的。
imf=emd(data);
cemd_visu(data,1:length(data),imf);%罗列IMF各分量及其残余信号

%求Hlibert-Huang谱
[A,fh,th]=hhspectrum(imf);%对IMF分量求取瞬时频率与振幅:A:是每个IMF的振幅向量,fh:每个IMF对应的瞬时频率,th:时间序列号

%单独看一个imf分量时域波形图
figure;
plot(t,imf(5,:))

%% 边际谱
[E,tt1]=toimage(A,fh,th,length(th));
% 将每个IMF信号合成求取Hilbert谱,E:对应的振幅值,Cenf:每个网格对应的中心频率。这里横轴为时间,纵轴为频率。

for k=1:size(E,1)
%? ?bjp(k)=sum(E(k,:))*1/fs*1/T;
? ? bjp(k)=sum(E(k,:))*1/fs; % 其中一个资源,不一样?
end
f=(0:N-3)/N*(fs/2);
figure();
plot(f,bjp);
xlabel('频率/HZ');
ylabel('幅值');
一起学习吧

新手

15 麦片

财富积分


050


3

主题

43

帖子

1

最佳答案
8#
?楼主| 发表于 2019-7-3 12:47:09 | 只看该作者
本帖最后由 一叶而知秋 于 2019-7-3 13:06 编辑
wx_fMmezrJ1 发表于 2019-7-3 10:53
我也是在学习这个方面,我自己是这样的。
imf=emd(data);
cemd_visu(data,1:length(data),imf);%罗列IMF各 ...

您好,我现在使用的MATLAB版本没有hhspectrum和toimage函数,并且instfreq函数总是报错,您能把这三个文件发给我吗?我的QQ邮箱是1156362293@qq.com,你加我一下,咱们相互交流交流。

新手

11 麦片

财富积分


050


2

主题

10

帖子

1

最佳答案
  • 关注者: 1
9#
发表于 2019-7-3 15:18:59 | 只看该作者
一叶而知秋 发表于 2019-7-3 12:47
您好,我现在使用的MATLAB版本没有hhspectrum和toimage函数,并且instfreq函数总是报错,您能把这三个文件 ...

你有验证问题,你加我吧,秋秋 467817956,蒲公英,问题
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /3 下一条

快速回复 返回顶部 返回列表