回复 58 # chenlu1986 的帖子
解决了,放到当前文件夹下就可以了,请问为什么放到toolbox不行呢?
有点不解:EMD分解层数是不是自动的呢?我如果想用残余信号怎么办?是不是用cy=imf(10,1:1000),求解!我这样试了,请看下面程序:
%修正后的EMD分解方案
function [cy]=my_emd( data ) %cy为分解后残余信号,data为待分解信号
imf=emd(data); %对输入信号data进行EMD分解
[A,f,t]=hhspectrum(imf); %对IMF分量求取瞬时频率与振幅:A:是每个IMF的振幅向量,f:每个IMF对应的瞬时频率,t:时间序列号
[E,t,Cenf]=toimage(A,f); %将每个IMF信号合成求取Hilbert谱,E:对应的振幅值,Cenf:每个网格对应的中心频率 这里横轴为时间,纵轴为频率
%即时频图(用颜色表示第三维值的大小)和三维图(三维坐标系:时间,中心频率,振幅)
cemd_visu(data,1:length(data),imf); %显示每个IMF分量及残余信号--------------------------------------------
cy=imf(10,1:1000);
figure;plot(canyu);
end
然后调用:[cy]=my_emd(y);%y为原信号
不同的y可能会有错误,也可能没有,我的y都很相似,实在找不出为什么
错误为:??? Index exceeds matrix dimensions.
Error in ==> my_emd at 9
cy=imf(10,1:1000);
小弟菜鸟,望高手指教!! |