hht处理数据过大时怎么抽取
我的数据很大,长度为180000,但是用程序一次性处理,会out of memorry,或者卡死出错,在进行抽取部分数据时,是应该连续抽取还是降低采样频率进行抽取,这样对数据处理有何影响。我是为了提取频率,着急处理,希望各位大神耐心指导 换一个好一点的电脑就不会出这样的问题。不清楚你说的连续抽取和降低采样频率之间是什么关系,我的理解的是你说的连续抽取是分段处理,我的建议也是分段处理。重采样可能能得到很好的结果,如果只是关心低频的话(当然从数据长度不能看出来采样频率大小)。
另外,这个问题可以跟帖重采样的帖子或者其他HHT相关的帖子 对,我说的连续抽取就是分段处理,但是每个分段的长度也很小,这样的话一个长度为180000的数据要分成很对段,并且每段数据又分出好几个IMF分量,这只是其中很小很小的一组数据,我的采样频率是100hz。
在此想请教您几个问题,因为我是初学者,时间又很紧,希望能耐心的指导。一:我用emd全过程进行处理数据时,在开始会显示Undefined function or variable 'L'。然后我把l和aff改成已知量,设定的l=1,aff=0,接着往下运行。问题二:出现warning:forced stop of sifting:too many iterations...mode(数字).stop parameter mean value: 问题三:即使出现第二个问题,依然可以出现结果,但是得到的边际谱很不靠谱,幅值在零点附近。问题四:用hht处理数据时最大的处理数据长度大概是多少。 本帖最后由 yghit08 于 2013-8-7 10:32 编辑
yueyaquan 发表于 2013-8-7 08:41 static/image/common/back.gif
对,我说的连续抽取就是分段处理,但是每个分段的长度也很小,这样的话一个长度为180000的数据要分成 ...
第一个问题不知道;
第二个是程序自己设定的停止条件;
第三个是和第二个直接的,自动停止也会出结果,那么边际谱不靠谱也是可以理解的:可能没能够正确分解;
第四个这个我不清楚,因为我们有比较好的电脑。采样频率不高,你再重采样的话可能会丢失更多信息,当然这要看你关注是什么频段的信息了。
clc;clear;
pass='D:\yiqulb\';
file='a1-0.5-15.txt';
z=load();
z=z(1:2:6000,:);
data=z';
imf=emd(data);
fs=50;
t=1:size(imf,2);
l=1;
aff = 0;
lt=length(t);
tt=t((l+1):(lt-l));
for i=1:(size(imf,1)-1)
an(i,:)=hilbert(imf(i,:)')';
f(i,:)=instfreq(an(i,:)',tt,l)';%Subscript indices must either be real positive integers or logicals.
A=abs(an(:,l+1:end-l));
if aff
disp(['mode ',int2str(i),' trait?'])
end
end
%对输入信号进行EMD分解
=hhspectrum(imf,t,l,aff); %对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
H=size(E,1);
f0=(0:H-1)/H*(fs/2);
figure(3);
plot(f0,bjp);% 作边际谱图 进行求取Hilbert谱时频率已经被抽样成具有一定窗长的离散频率,所以此时的频率轴已经是中心频率
xlabel('??/ Hz');
ylabel('??');
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
以上是我用的程序,采用降低采样频率的方法取了其中3000个数据,针对每个IMF分量画出了其时频图和边际谱,共有10个IMF分量,只取了前七个,得到的图如下:
我要的频率应该在2.5到5之间,应该主要集中在3Hz左右 yghit08 发表于 2013-8-7 10:31 static/image/common/back.gif
第一个问题不知道;
第二个是程序自己设定的停止条件;
第三个是和第二个直接的,自动停止也会出结果, ...
麻烦你看看我下面的回复 本帖最后由 yghit08 于 2013-8-7 12:37 编辑
yueyaquan 发表于 2013-8-7 11:37 static/image/common/back.gif
麻烦你看看我下面的回复
那你重采样看看吧,20Hz的重采样频率。
另:不要将分离出来的结果画时频图,这样很多情况下会出现溢出内存的提示。
直接观察就行了。比如:
=hhspectrum(IMFs);%%%%其中A是幅值,f是归一化频率
plot(t/sf,f(:,n)*sf);%sf是采样频率,n是某一行,不对的话改成f(n,:)
这样看的话,就不会出现溢出内存的问题了
本帖最后由 yueyaquan 于 2013-8-12 17:25 编辑
yghit08 发表于 2013-8-7 11:39 http://forum.chinavib.com/static/image/common/back.gif
那你重采样看看吧,20Hz的重采样频率。
另:不要将分离出来的结果画时频图,这样很多情况下会出现溢出内 ...
嗯,我采用你的只画边际谱的方式进行全部数据处理,虽然还会出现第二个问题,但是出来的每个IMF对应的边际谱已经算是很干净的了,唯一的缺点是峰带有点宽,相比傅立叶变换要宽的多,这是什么原因? yueyaquan 发表于 2013-8-12 17:23 static/image/common/back.gif
嗯,我采用你的只画边际谱的方式进行全部数据处理,虽然还会出现第二个问题,但是出来的每个IMF对应的边 ...
相信傅里叶变换的结果吧。
原因未知! 我也是遇到这种问题,过来学习下
页:
[1]