声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 5432|回复: 31

[HHT] 请教振动信号EMD分解问题

[复制链接]
发表于 2008-3-18 21:21 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
各位高手,我是初学者在实验EMD程序对我的信号进行分析,遇到不少问题,请教大家帮忙看看,谢谢。原始信号是地面震动信号,如图横轴是采样点数,纵轴是幅度/V ,取其中12000到4000点组成signal[local]3[/local]进行后续处理,采用不同的程序显示结果不同,不知道什么地方的问题,请大家帮忙看看,方法1:
M = max(max(abs(imf(1:rol-1,:))));
for j = 1:rol-1
  subplot(rol+1,1,j+1);
  plot(imf(j,:));
  set(gca,'YTick',[]);
  set(gca,'XTick',[]);
  ylabel(['imf',int2str(j)]);
end
subplot(rol+1,1,1);
title('Empirical Mode Decomposition');
subplot(rol+1,1,rol+1);
plot(imf(rol,:),'r');
axis('tight');
set(gca,'YTick',[]);
set(gca,'XTick',[]);
ylabel('res.');
得到下面图,原始信号不会加入,请教大家如何在上面画出原始信号?如果采用命令emd_visu(signal,1:length(signal),imf);得到下面的图请教大家这个图画的怎么这样呢?原始信号显示的和原来不同了,为什么?图太多了,下面贴子继续贴,未完待续!!

[ 本帖最后由 zhangnan3509 于 2008-3-25 19:13 编辑 ]

原始信号波形图

原始信号波形图
methond1.jpg
method2.jpg

rawsignal.mat

39.85 KB, 下载次数: 43

signal

回复
分享到:

使用道具 举报

 楼主| 发表于 2008-3-18 21:31 | 显示全部楼层
接上面贴子,后来不知道用了什么命令画出了如下的图,:@L ,见谅,请大家帮忙看看这是怎么画的,而且三个结果都不同
unknown.jpg 但是我用其他方法画的和这个最相近,特别是信号的幅度,可我的信号幅度为什么这么小的?
发表于 2008-3-24 21:50 | 显示全部楼层
楼主,你的问题能不能说得再清楚一点。除了EMD分解图上要有原始信号之外,还有什么问题,怎么会出现3种结果?
 楼主| 发表于 2008-3-25 18:38 | 显示全部楼层
感谢版主回帖!我想请教的就是一个信号,但是采用了不同的程序得到的EMD分解,画出图后居然可以有3个不同的样子,而且我不知道那个是对的,请版主帮忙分析下。信号已经放着贴子里。method1是采用方法1得到的,其中对于EMD画图没用使用emd_visu那个函数,所以得到了那样的图,EMD分解是直接调用程序的;method2是调用EMD分解程序后,再使用emd_visu函数得到的图,和method1得到的不同;最后一个图是我当时不知道用什么命令得到的,和前面的不同,请教版主,究竟哪个方法是正确结果呢?
发表于 2008-3-25 19:15 | 显示全部楼层
这和函数没关系,emd_visu也是一个显示EMD分解图的程序。如果不用它,结果也是一样的。这二者没有什么本质上的区别。
 楼主| 发表于 2008-3-25 19:18 | 显示全部楼层
那为什么采用emd_visu后的原始信号都变得和原来的不同呢?而且不同方法得到的imf也不同,后面如果继续分析应该采用什么结果呢?
发表于 2008-3-25 19:37 | 显示全部楼层

回复 6楼 的帖子

我做出来的结果跟你不一样,我选的是1200点到4000点

[ 本帖最后由 zhangnan3509 于 2008-3-25 19:39 编辑 ]
3.gif
 楼主| 发表于 2008-3-25 19:41 | 显示全部楼层
写错了,我用的是12000到40000点:@L,版主可以试试我第一种方法的程序,在上面贴子里,为什么得到的EMD分解图和采用emd_visu画出的不同呢?

[ 本帖最后由 sjdwjt 于 2008-3-25 19:55 编辑 ]
 楼主| 发表于 2008-3-26 21:21 | 显示全部楼层
版主对我这个程序研究了嘛?谢谢
发表于 2008-3-26 21:28 | 显示全部楼层

回复 9楼 的帖子

数据点是多少?28001吧?
 楼主| 发表于 2008-3-27 10:21 | 显示全部楼层
不好意思版主,我的原始数据是48000点的,就是那个rawsignal.mat,我取了其中12000点到40000点得到的是signal信号,对它做emd分解然后画图,后面的结果都是signal信号变换的结果。
 楼主| 发表于 2008-3-28 21:36 | 显示全部楼层
版主能帮我看看这个问题嘛?谢谢
发表于 2008-3-28 21:41 | 显示全部楼层

回复 12楼 的帖子

我可能是读取时有问题,我打开之后显示点数是28001点:@L

我觉得就算不用emd-visu,自己编写程序出来的结果也是一样的啊

[m,n]=size(imf);
for i=1:m
   
    subplot(m,1,i);
    plot(imf(i,1:28000));
   
end
用这个显示也是一样。(这仅仅就是一个例子,楼主可以根据自己编程的习惯修改,照搬也许会出问题)

[ 本帖最后由 zhangnan3509 于 2008-3-28 21:51 编辑 ]
发表于 2008-3-28 21:49 | 显示全部楼层

回复 13楼 的帖子

另外我的意见是 可以改造emd_visu这个函数,自己编写的时候没必要全部参考这个程序,否则主程序阅读性差,循环多,而且也容易把自己弄乱了
 楼主| 发表于 2008-3-28 22:19 | 显示全部楼层
signal的数据点数就是28001点的,截取了原始数据的12000到40000点,在matlab变量空间中显示就是1×28001的数据,难道是我的matlab有问题?我看到的都是横线,:@L,纵坐标怎么回事呢?就是用的版主的程序

imf=emd(signal);
[m,n]=size(imf);
for i=1:m
   
    subplot(m,1,i);
    plot(imf(i,1:28000));
   
end
untitled.jpg
untitled.jpg
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-11-25 15:29 , Processed in 0.109583 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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