LMD_初步的结果-大家讨论
我自己编写的LMD程序,不同的是原始文献中用的移动平均法做的包络之类,我用的cubic样条函数做的。原始信号x=10*sin(100*t/(2*pi))+10*sin(400*t/(2*pi))
分解后结果见图。
第一张图显示的是高阶频率部分分离和原始信号
第二张图是将高阶频率部分去除后的分离结果和次高阶原始信号
对于结果,我想还是我利用了样条函数做,然后需要做端点延拓的问题(我用的EMD,法国人写的那个EMD中的端点延拓的方法)。欢迎大家跟帖,如果可以的话同时求移动平均法替代cubic样条函数做包络之类的。再者,直接管我要程序的不理睬。
自己顶一顶,欢迎跟帖。同时,占据沙发 再补一个图信号时x=10*sin(100*t/(2*pi))
结果见图
从图形中看,貌似又不是端点的问题(和一楼中的第二个图比较的话)
仔细看看的话还可能是和端点有关系,因为第二个图中左端点有小波动。大家发表自己的看法吧
信号x=10*exp(-t)*sin(100*t/(2*pi))结果见图
大家比较着看,目前没什么想法,我
兄弟。用个实际信号看看,模拟信号好并不代表实际信号也好 回复 5 # xiaoaq 的帖子
模拟信号做的一般的话,实际信号不会做的好!另外还需要再改进改进。等等吧! 补充两个图。另外给出给上面那些图的原因:很多时候我们更关心的是频率,幅值关心的少。还是一楼的信号,只是给出的形式是PF1和PF2。在这一楼给出来的图第一张是我自己画的,第二章是LMD作者传给我的(同一个信号,一楼的信号)。
大家注意上图端点的地方,其他地方几乎是一样的 仅供参考:LMD的目标是将原始信号分解成调幅分量。数学上,两个正弦分量和形式也可以写成调幅信号,这点与EMD中的模式混叠或者是分辨率问题是一样的。
你图中的PF1比较接近原始信号,可能就是把叠加信号当成了调幅信号分解到了一个PF分量中。
若有谬误,大家交流指正。 端点你用了镜像延拓?你求极值点用的什么方法 雨夜1011 发表于 2012-6-16 09:06 static/image/common/back.gif
端点你用了镜像延拓?你求极值点用的什么方法
你问的这部分内容在法国人写的那个EMD算法中有,你注意一下里面的函数extr和Boundary_conditions这个函数(extr是提取局部最值的函数,另一个貌似是镜像延拓的端点处理问题)。另外你有其他端点延拓的方法吗?不过,如果你用LMD原作中的移动平均法的话,貌似不用处理端点问题(个人认为也是需要处理端点问题的)。再提醒一下的,用extr提取的是分别存放了局部极大值和局部极小值,在LMD中统称为局部最值,这样的话你需要对用extr提取出来的局部最大/小值做一个重拍。命令如下:
[tmin tmax zmin zmax]=extr(x,1:length(x));
tIndexTemp=[tmin tmax];
zMaxMinTemp=[zmin zmax];
[tIndex OrderIndex]=sort(tIndexTemp);
for jj_j=1:length(x);
ii_i=OrderIndex(jj_j);
zMaxMin(jj_j)=zMaxMin(ii_i);
end
希望对你有用!等帖子到了50楼,我在51楼分享我写的全部程序。
函数extr和Boundary_condition我知道,一个是提取数据的极值,一个是和你说的一样就是镜像延拓,你后面的是对极值点的处理(两个坐标的轴)。你开始不是说你用的三次样条插值的吗?应该是直接上包络和下包络的啊。怎么看你的程序你把局部的极小值和极大值排序了~~难道你还是按照滑动平均的方法来计算的~~ps:想问你下,最后你做的程序能处理实际信号吗,我的老是出现问题 回复 12 # 雨夜1011 的帖子
我还没有去处理实际信号。在LMD中不需要做上下包络(那是EMD做的)。LMD做的是均值(两临近最值的和的0.5做)和幅值(两临近的局部最值做差的绝对值的0.5做)。我用三个频率信号也做了,可以分离出来,只是分离效果不好。你有移动平均法或者有理样条的程序?? 回复 12 # 雨夜1011 的帖子
你再看看LMD的文章就知道了,不做上下包络,另外在LMD中统称局部极大/小值为局部极值(不做上下包络) 本帖最后由 yghit08 于 2012-6-16 15:57 编辑
大家自己看着下吧,分离效果一般。程序写的一般怕被笑话,所以用.p格式的