声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1585|回复: 8

[综合讨论] 互信息识别emd中虚假分量

[复制链接]
发表于 2013-9-11 20:42 | 显示全部楼层 |阅读模式

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

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

x
使用互信息去识别emd中的虚假分量,怎么出现互信息大于1?
代码如下:
fs=500;
N=1000;
n=0:N-1;
t=n/fs;
x=sin(2*pi*3*t)+0.4*sin(2*pi*11*t)+0.9*sin(2*pi*25*t);
imf=emd(x);
[m,n]=size(imf);
for i=1:m
    subplot(m,1,i);
    plot(t,imf(i,:));
end
%求各分量的相关系数与互信息
for i=1:m;
R=corrcoef(imf(i,:),x);
xg(i)=abs(R(1,2));
end
for i=1:m
mi(i,:)=mutinf(imf(i,:), x);
end

本帖被以下淘专辑推荐:

回复
分享到:

使用道具 举报

发表于 2013-12-11 14:20 | 显示全部楼层
楼主那个mutinf函数有吗 麻烦发一下  chaikai0805@163.com
 楼主| 发表于 2013-12-11 18:57 | 显示全部楼层
这是互信息的
发表于 2013-12-11 19:05 | 显示全部楼层
但是我运行的时候matlab找不到这个函数啊
发表于 2013-12-12 17:02 | 显示全部楼层
我也在学习互信息··有没有高手给讲讲
发表于 2014-7-14 11:33 | 显示全部楼层
应该把所有的IMF分量和原信号进行归一化处理,这样各个IMF分量和原信号的相关系数最大为1
发表于 2014-7-15 11:19 | 显示全部楼层
% 选择本征模分量
R=size(Imf,1);
[nImf,SigLen]=size(Imf);
xCor=[];
norm_Sig=(Sig-mean(Sig))/std(Sig);
for r=1:R
    norm_Imf=(Imf(r,:)-mean(Imf(r,:)))/std(Imf(r,:));
    Coef=xcorr(norm_Sig,norm_Imf)/SigLen;
    xCor=[xCor max(abs(Coef))];
end
k=find(xCor>max(xCor)/2);
Imfs=zeros(length(k),SigLen);
for t=1:length(k)
    Imfs(t,:)=Imf(k(t),:);
end
发表于 2014-7-16 19:38 | 显示全部楼层
怎么看不懂呢
发表于 2014-7-19 09:55 | 显示全部楼层
非常感谢,谢谢分享
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-5-10 21:26 , Processed in 0.165281 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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