华电机械 发表于 2013-9-11 20:42

互信息识别emd中虚假分量

使用互信息去识别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);
=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

ck313 发表于 2013-12-11 14:20

楼主那个mutinf函数有吗 麻烦发一下chaikai0805@163.com

华电机械 发表于 2013-12-11 18:57

这是互信息的

ck313 发表于 2013-12-11 19:05

但是我运行的时候matlab找不到这个函数啊

信号处理锟 发表于 2013-12-12 17:02

我也在学习互信息··有没有高手给讲讲

hht123 发表于 2014-7-14 11:33

应该把所有的IMF分量和原信号进行归一化处理,这样各个IMF分量和原信号的相关系数最大为1

hht123 发表于 2014-7-15 11:19

% 选择本征模分量
R=size(Imf,1);
=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=;
end
k=find(xCor>max(xCor)/2);
Imfs=zeros(length(k),SigLen);
for t=1:length(k)
    Imfs(t,:)=Imf(k(t),:);
end

michael.li 发表于 2014-7-16 19:38

怎么看不懂呢

zdf-kl 发表于 2014-7-19 09:55

非常感谢,谢谢分享
页: [1]
查看完整版本: 互信息识别emd中虚假分量