changes 发表于 2016-5-10 21:21

关于希尔伯特变换谱和边际谱的问题,跪求!!!!

试了论坛上的一些程序得到的边际谱和希尔伯特变换谱都是这样。我觉得可能是toimage函数的问题,但用了论坛里的程序还是这样。。有些崩溃


Eminem 发表于 2016-5-11 08:38

别人的程序不能直接用,还得仔细调试

yghit08 发表于 2016-5-12 13:02

可能是预处理没有做好,低频信号比较强。可以去除最后分解的IMF,只用前面几个imf去测试程序。要想做好文章,请远离emd

yghit08 发表于 2016-5-12 13:07

另外从你的psd图像看的话,扩展你toimage的频率显示范围也许能看到一些结果,如果是这样的话,高频成分是主要的,频率显示范围可以修改。另外,你的信号是什么信号,你的采样频率是多少?做信号处理前其实对信号的结果是应该要有一定的感性认识,预估会出现什么样的结果

changes 发表于 2016-5-12 23:35

yghit08 发表于 2016-5-12 13:07
另外从你的psd图像看的话,扩展你toimage的频率显示范围也许能看到一些结果,如果是这样的话,高频成分是主 ...

我用的是论坛里的一个现成程序尝试希尔伯特普和边际谱的,原作者在论坛上也给出了处理的图,但我画出来的图就是上面那两个情况。
clc
clear all
close all
N=1000;
n=1:N;
fs=1000;
t=n/fs;
fx=10;
fy=50;
x=cos(2*pi*fx*t);
y=10*cos(2*pi*fy*t);
z=x+y;
data=z;
imf=emd(data);

%对输入信号进行EMD分解   

=hhspectrum(imf);            %对IMF分量求取瞬时频率与振幅:
                %A:是每个IMF的振幅向量,f:每个IMF对应的瞬时频率,t:时间序列号

=toimage(A,f);    %将每个IMF信号合成求取Hilbert谱,E:对应的振幅值,
                   %Cenf:每个网格对应的中心频率这里横轴为时间,纵轴为频率      
                                                   %即时频图(用颜色表示第三维值的大小)和三维图(三维坐标系:时间,中心频率,振幅)         
cemd_visu(data,1:length(data),imf);   %显示每个IMF分量及残余信号--------------------------------------------
disp_hhs(E);                        %希尔伯特谱----------------------------------------------------------
%画出边际谱
N=length(Cenf);%设置频率点数   %完全从理论公式出发。网格化后中心频率很重要,大家从连续数据变为离散的角度去思考,相信应该很容易理解
for k=1:size(E,1)
    bjp(k)=sum(E(k,:))*1/fs;
end
figure(3);
plot(Cenf(1,:)*fs,bjp);% 作边际谱图   进行求取Hilbert谱时频率已经被抽样成具有一定窗长的离散频率,所以此时的频率轴已经是中心频率
xlabel('频率 / Hz');
ylabel('幅值');

wolfxin 发表于 2016-5-13 06:05

狠是深奥!我用过希尔波特变换,但是没有深入的研究过!

sovereign 发表于 2016-5-13 09:11

yghit08 发表于 2016-5-12 13:02
可能是预处理没有做好,低频信号比较强。可以去除最后分解的IMF,只用前面几个imf去测试程序。要想做好文章 ...

为什么要原理emd呢,本人初学者,还望指教
页: [1]
查看完整版本: 关于希尔伯特变换谱和边际谱的问题,跪求!!!!