声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

楼主: yghit08

[其他] LMD_初步的结果-大家讨论

[复制链接]
发表于 2012-9-28 20:36 | 显示全部楼层
谢谢分享好东西
回复 支持 反对
分享到:

使用道具 举报

 楼主| 发表于 2012-9-29 11:15 | 显示全部楼层
发表于 2012-10-4 16:41 | 显示全部楼层
yghit08 发表于 2012-9-25 21:34
思路是对的,这个也是这一类基于EMD或者LMD做滤波或者去噪的思路,至于为什么出现在突变处不能很好的发现 ...

不同的插值法都试过,真信号基本都没问题,但用到实际信号中就只有线性插值能分解出我想要的信号,用三次样条的话就会出现PF分量在个别点的幅值过大(可以到10^20数量级,明显错误,导致这个现象的原因应该是在分解过程中不断除以包络 h/a这一步,但为什么不同插值法区别如此之大目前还没搞清楚,感觉无从下手了)。至于分解终止条件,我也没考虑太多,暂时主要是先能分解出来想要的结果再说。
发表于 2012-10-7 12:44 | 显示全部楼层
yghit08 发表于 2012-6-17 19:42
利用分别利用上下包络做局部均值和包络,也就是在LMD原始文献中不区分局部极大值和局部极小值(统称为局部极 ...

这个文件是什么格式的,用matlab打不开……
 楼主| 发表于 2012-10-8 10:40 | 显示全部楼层
danielrichie 发表于 2012-10-4 16:41
不同的插值法都试过,真信号基本都没问题,但用到实际信号中就只有线性插值能分解出我想要的信号,用三次 ...

你说的这个问题我也遇到过,所以我一般只看PF在成分中的MF部分,这部分还可以。我想出现这个问题的原因主要是做AF-MF这个分解的过程,这样来看的话可以适当的将分解调节放松一些看看是否能稍微好的解决一下。线性插值我想是比较差的插值方法,可能针对你的信号比较好用,建议你用移动平均这个插值方法试试(和线性插值差不多,局部的线性插值而已,个人理解)
 楼主| 发表于 2012-10-8 10:41 | 显示全部楼层
振动分析 发表于 2012-10-7 12:44
这个文件是什么格式的,用matlab打不开……

预编译的格式,你在后续的楼层中能找到对应的.m格式的文件。建议你认真的看看整个帖子
 楼主| 发表于 2012-10-12 10:33 | 显示全部楼层
今天有发邮件问我要完整程序的,我记得各层帖子中有,避免大家麻烦,现打包在此层中。

新建文件夹.rar

6.48 KB, 下载次数: 159

 楼主| 发表于 2012-10-12 19:01 | 显示全部楼层
yghit08 发表于 2012-10-12 10:33
今天有发邮件问我要完整程序的,我记得各层帖子中有,避免大家麻烦,现打包在此层中。

补充上一楼!

CombinMaxMin.rar

371 Bytes, 下载次数: 104

发表于 2012-10-18 10:25 | 显示全部楼层
请问楼主有画过时频分布图没,类似下面这种?文献里面都只说到“将所有PF分量的瞬时幅值和瞬时频率组合即可得到原始信号的完整时频分布”,但我一直没搞清楚用Matlab怎么去实现……望赐教,谢谢!
QQ截图20121018102228.jpg
 楼主| 发表于 2012-10-18 10:42 | 显示全部楼层
danielrichie 发表于 2012-10-18 10:25
请问楼主有画过时频分布图没,类似下面这种?文献里面都只说到“将所有PF分量的瞬时幅值和瞬时频率组合即可 ...

不知道楼主是否用过EMD?如果用过的话应该知道怎么做!
如果没用过接着看!
确实,本帖中只是做了单次分解的结果,每一次循环只能提取出来一个PF,因为没有做停止分解的判据。如果想提取更多的PF,只需要多做几次循环即可。
至此,将所得到的所有PF分成两个矩阵:AF一个和MF一个(注意AF和MF要对应好,而且最好是以行的形式存在各自的矩阵中,这针对的情况也是求解瞬时幅值和瞬时频率不是利用Hilbert谱,如果是利用Hilbert谱的话直接存成PF一个矩阵就好)。至于楼主提到的“将所有PF分量的瞬时...”大概就是我说的这个过程。接着就是利用分解得到的瞬时幅值矩阵和瞬时频率矩阵(注意如果是利用Hilbert谱做瞬时频率的求解,一般会缩短两个数据,相应的AF矩阵要去掉前两列的数据反正是要AF矩阵和MF矩阵维数要匹配)做时频谱。不知道是否要给你做一个范例?

发表于 2012-10-18 10:56 | 显示全部楼层
我按照你们的程序来运行之后为啥就出现错误呢?
??? Error using ==> spline
Too many input arguments.

Error in ==> spline at 2
SPLINE Cubic spline data interpolation.

Error in ==> interp1 at 279
        yiMat = spline(xCol.',yMat.',xiCol.').';

Error in ==> lmd_test at 20
LocalMaxEn=interp1(tmax,zmax,1:n,'spline');  %%%%%上包络

Error in ==> Untitled1018 at 3
[Am_d Fm_d]=lmd_test(x);
 楼主| 发表于 2012-10-18 11:22 | 显示全部楼层
danielrichie 发表于 2012-10-18 10:25
请问楼主有画过时频分布图没,类似下面这种?文献里面都只说到“将所有PF分量的瞬时幅值和瞬时频率组合即可 ...

你看这里的图和处理就知道怎么做了(我是用Hilbert谱做的瞬时频率的求解)
做的是:
t=0:0.0005:2;
x=9*sin(400*2*pi*t)+3*sin(10*2*pi*t);
[AF_1 MF_1]=lmd_test(x);

x=x-AF_1.*MF_1;
[AF_2 MF_2]=lmd_test(x);
PF1=AF_1.*MF_1;
PF2=AF_2.*MF_2;
PF=[PF1;PF2];
[A,f]=hhspectrum(PF);
[im,tt]=toimage(A,f);
disp_hhs(im,tt/2000,[],2000)
axis([0 2 0 500])


test_test_lmd.rar

4.54 KB, 下载次数: 68

 楼主| 发表于 2012-10-18 11:24 | 显示全部楼层
znas0707 发表于 2012-10-18 10:56
我按照你们的程序来运行之后为啥就出现错误呢?
??? Error using ==> spline
Too many input arguments.
...

不知道你是否做了改动还是你Matlab的版本比较低?就给这一个提示的话,我认为是你matlab的版本比较低,如果是这样的话安装7.0以后的版本会好很多
发表于 2012-10-18 15:37 | 显示全部楼层
yghit08 发表于 2012-10-18 11:24
不知道你是否做了改动还是你Matlab的版本比较低?就给这一个提示的话,我认为是你matlab的版本比较低,如 ...

我用的是2010a的 是不有点低呢 要是这样的话我前面做的EMD出现的错误也是这个问题吧
 楼主| 发表于 2012-10-18 16:01 | 显示全部楼层
znas0707 发表于 2012-10-18 15:37
我用的是2010a的 是不有点低呢 要是这样的话我前面做的EMD出现的错误也是这个问题吧

那应该没有问题,你下你楼上的楼上的楼上的那两个压缩文件再试试!我这里没问题,这样也不是版本的问题。
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-4-25 23:46 , Processed in 0.097052 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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