关于轴承故障数据的hilbert-huang变换
各位大侠您好,我最近在学习EMD有关的信号处理,在网上下载了轴承的故障数据,作出的边际谱不对,不知道是怎么回事?数据应该没有问题,hht程序我用自己仿真的正余弦信号验证,作出的hilbert边际谱是完全正确的,可以排除程序的问题。下面是程序和图形,请赐教!load 279X279_FE_time ((10000:121351),:)=[];data=X279_FE_time ;plot(linspace(0,0.01,length(data)),data)imf=emd(data);cemd_visu(data,1:length(data),imf)=hhspectrum(imf);
=toimage(A,f); disp_hhs(E);for k=1:size(E,1)bjp(k)=sum(E(k,:))*1/fs;endfigure(3);plot(Cenf(1,:)*fs,bjp);xlabel('频率 / Hz');ylabel('幅值');时域图如下:
边际谱如下:
时域图
并且做出的hilbert谱是离散分布的点 回复 3 # marry0539 的帖子
你把你的279.mat数据上传一下大家可以帮测试 还是我的程序有问题啊?请高手赐教! 回复 1 # marry0539 的帖子
你的EMD和求边际谱的程序没有错误。
但是我没理解你的想法。。。
你是要检测故障(比如轴承内圈、外圈)的吧?但是你的程序并不是检测故障的呀,
建议你看一下于德介的书,机械故障诊断的Hilbert-Huang变换方法,里面有基于HHT故障检测的方法。 回复 6 # chenlu1986 的帖子
我目的是检测轴承的故障,直接调用EMD有关的函数不就可以吗?做边际谱,看特征故障频率及其倍频不就可以吗?主任您能给我一段调用EDM函数之前的 程序段吗 我受点启发!谢谢 回复 6 # chenlu1986 的帖子
load 279
fs=5000;
t=(0:1/fs:2);
N=length(t);
x=X279_FE_time ;
data=x(1:N,1);
imf=emd(data);
cemd_visu(data,1:length(data),imf)
=hhspectrum(imf);=toimage(A,f); disp_hhs(E);
for k=1:size(E,1)
bjp(k)=sum(E(k,:))*1/fs;
end
figure(3);
plot(Cenf(1,:)*fs,bjp);xlabel('频率 / Hz');
ylabel('幅值');
这是我的程序,您看看哪里不对?
原数据如下:
本帖最后由 chenlu1986 于 2011-4-17 16:11 编辑
回复 7 # marry0539 的帖子
我曾经做过一次内圈故障检测,是EMD+Hilbert的包络分析方法。大概步骤是对含有高频共振成分的前几个IMF进行Hilbert变换,求出幅值(Hilbert法解调出包络:解析信号的幅值即使信号的包络)。最后进行FFT得到包络信号频谱。一般分解出的第一个IMF分量包含高频共振成分较多,可以从IMF1的包络谱中可以找到相应的故障频率。。。
您用的边际谱检测故障特征频率的方法我没用过~上面方法仅供参考~
参考书是:于德介的,机械故障诊断的Hilbert-Huang变换方法
现在也在做这个,很好的参考。 现在也在做这个,可以参考。 回复 9 # chenlu1986 的帖子
您好麻烦问哈关于故障特征频率的计算,在论坛里看了很多帖子,有点迷糊了。例如外圈故障吧,有的写的是按照西面方式计算的
r:轴承转速,单位:转/分钟;n:滚珠个数;d:滚动体直径;D:轴承节径;α:滚动体接触角(contact angle)f:转子转速
外圈故障频率=r/60 * 1/2 * n(1-d/D *cosα)
有的是外圈故障频率= 1/2 * n(1-d/D *cosα)*f
具体这两个到底哪个是对的呢?
新手,麻烦指点哈。谢谢
回复 12 # 小刺猬和小老鼠 的帖子
呵呵 这个我是外行,你可以去故障版块瞧瞧,那里这方面的专家多~ 回复 13 # chenlu1986 的帖子
呵呵,我是外行,刚接触这个,最近看些帖子还有文章给看晕了。谢谢哈 外圈故障频率=r/60 * 1/2 * n(1-d/D *cosα)
有的是外圈故障频率= 1/2 * n(1-d/D *cosα)*f
这两个公式是一样的!
r/60 得到的就是频率f
每分钟转数r除以60秒就是频率f。
页:
[1]
2