声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1283|回复: 9

[HHT] 关于emd的问题,请帮忙!

[复制链接]
发表于 2008-5-6 08:49 | 显示全部楼层 |阅读模式

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

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

x
请各位大侠帮忙:
我在运行emd得到IMF分量后,求边际谱时出现了下面的问题:

??? Out of memory. Type HELP MEMORY for your options.

Error in ==> D:\MATLAB6p5\toolbox\matlab\elmat\fliplr.m
On line 16  ==> y = x(:,n:-1:1);

Error in ==> F:\calculate program\hilbert-huang\toimage.m
On line 77  ==> im=fliplr(im)';

Error in ==> F:\calculate program\hilbert-huang\BJP.m
On line 76  ==> [E,tt1]=toimage(A,fa,tt,length(tt));

请大家帮忙看看!多谢了!

本帖被以下淘专辑推荐:

回复
分享到:

使用道具 举报

发表于 2008-5-6 09:09 | 显示全部楼层

回复 楼主 的帖子

请把把程序贴出来,这样有问题也好找:handshake
发表于 2008-5-6 09:49 | 显示全部楼层
本帖最后由 wdhd 于 2016-9-10 14:42 编辑
原帖由 zzw1983107 于 2008-5-6 08:49 发表
请各位大侠帮忙:
我在运行emd得到IMF分量后,求边际谱时出现了下面的问题:

??? Out of memory. Type HELP MEMORY for your options.

Error in ==> D:\MATLAB6p5\toolbox\matlab\elmat\fliplr.m
On line 16 ...

估计你的数据量太大,内存太少了。这个错误估计搜索论坛就找到如何解决了
 楼主| 发表于 2008-5-6 12:17 | 显示全部楼层

回复 3楼 的帖子

首先谢谢楼上的两位,我的数据有6000个数,我把虚拟内存改大了,也还是不行啊。
请问你们在求边际谱的时候最大处理多少个数?
发表于 2008-5-6 13:02 | 显示全部楼层
本帖最后由 wdhd 于 2016-9-10 14:42 编辑
原帖由 zzw1983107 于 2008-5-6 12:17 发表
首先谢谢楼上的两位,我的数据有6000个数,我把虚拟内存改大了,也还是不行啊。
请问你们在求边际谱的时候最大处理多少个数?

6000个数不算多啊,我试了一下,速度还挺快的。把程序贴上来看看,还有最好把matlab升级到7.1以上。

[ 本帖最后由 jinnian 于 2008-5-6 13:05 编辑 ]
 楼主| 发表于 2008-5-6 13:44 | 显示全部楼层

回复 5楼 的帖子

[imf,ort,nbits] = emd(x); %imf中包含了各个IMF和趋势R分量
n=size(imf,1)
ort=io(x,imf)  %计算各分量的正交性
figure(2)
subplot(n+1,1,1)
plot(x);
for i=1:n
        subplot(n+1,1,i+1);
    plot(imf(i,:));
end
figure(3)
N=length(imf(1,:));
y=imf; %IMF集
%%%%%%%%%%%%%求边际谱
[A,fa,tt]=hhspectrum(y);
[E,tt1]=toimage(A,fa,tt,length(tt));
E=flipud(E);
  for k=1:size(E,1)
    bjp(k)=sum(E(k,:))*1/fs;
end
ft=(0:N-3)/N*(fs/2);
plot(ft,bjp);
xlabel('频率 / Hz');
ylabel('幅值');
end
请高手给帮忙看看吧,电脑是1G内存,x为6000个数,得到的E应该是6000*6000的矩阵。算边际谱的时候就出现out of memory的错误了.
还有一个有的程序在    bjp(k)=sum(E(k,:))*1/fs*1/T;  那怎么理解?   谢谢各位了!
发表于 2008-5-6 14:47 | 显示全部楼层
本帖最后由 wdhd 于 2016-9-10 14:42 编辑
原帖由 zzw1983107 于 2008-5-6 13:44 发表
= emd(x); %imf中包含了各个IMF和趋势R分量
n=size(imf,1)
ort=io(x,imf)  %计算各分量的正交性
figure(2)
subplot(n+1,1,1)
plot(x);
for i=1:n
        subplot(n+1,1,i+1);
    plot(imf(i,:));
end
figure(3 ...

不知楼主用的emd包是什么时候的版本,我的新版的是不能这样调用的:[E,tt1]=toimage(A,fa,tt,length(tt))。正确的调用例子如下: [im,tt,ff] = toimage(A,f);[im,tt] = toimage(A,f,t);[im,tt,ff] = toimage(A,f,sply);[im,tt,ff] = toimage(A,f,splx,sply);[im,tt,ff] = toimage(A,f,t,splx,sply);当然新版的也用不着E=flipud(E)这一句,但这一句肯定不会引起内存溢出。6000点的数据量真的不算不多。我算过至少100000点的数据。

[ 本帖最后由 jinnian 于 2008-5-6 14:56 编辑 ]
 楼主| 发表于 2008-5-6 15:15 | 显示全部楼层

回复 7楼 的帖子

我的数据量太大了,因为这个没法算,挺苦恼的!
发表于 2008-5-6 15:28 | 显示全部楼层
好的,我发一个给你!等一下吧!……已发,请查收!matlab可能要用7.1以上版本。再说一句,你的数据量真的不算大。我的机器配置也不高的。

[ 本帖最后由 jinnian 于 2008-5-6 15:34 编辑 ]
发表于 2008-6-5 20:41 | 显示全部楼层
用clear清楚WORKSPACE里的变量,用完一个清一个(指比数据量比较大的变量),可以缓解这种情况。6000的数据量好像真的不大,要是6000*6000可就够大的了
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-5-22 06:02 , Processed in 0.056650 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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