声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 6057|回复: 18

[HHT] 请教toimage参数!

[复制链接]
发表于 2007-6-28 15:53 | 显示全部楼层 |阅读模式

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

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

x
[E,tt1]=toimage(A,ff,tt,length(tt));我tt长度是61440,一运行它说变量长度超过限制了,这个怎么处理,谢谢
回复
分享到:

使用道具 举报

发表于 2007-6-28 16:23 | 显示全部楼层

回复 #1 tangaoming 的帖子

toimage好像没有限制信号长度的语句,请给出你的原始出错信息。
 楼主| 发表于 2007-6-28 16:37 | 显示全部楼层
??? Error using ==> accumarray
Maximum variable size allowed by the program is exceeded.

Error in ==> toimage at 98
im = accumarray([indf(:),indt(:)],A(:),[sply,splx]);
发表于 2007-6-28 16:39 | 显示全部楼层

回复 #1 tangaoming 的帖子

请把你程序贴出来,这样头疼医头,脚疼医脚的分析方法是不行的
发表于 2007-6-28 16:47 | 显示全部楼层
你用的是2007年新版的程序,也许可以试试老版中的toimage
请把你程序贴出来,这样头疼医头,脚疼医脚的分析方法是不行的

nod,也许是前面输入参数的问题也说不定
发表于 2007-6-28 16:54 | 显示全部楼层
我建议如果是MATLAB版本低于7.0还是不要装新版了,也许是因为版本的问题。我想起了昨天有会员少了 accumarray函数也是求不出时频图。好像也是这个 accumarray函数的问题。
 楼主| 发表于 2007-6-28 18:05 | 显示全部楼层
不,我是最新版的程序,而且matlab是2007a版本的,应该没有什么问题,数据我是用emd分解后取前四行的数据,命令:
[A,ff,tt]=hhspectrum(IMF(1:4,:));
N=61440;fs=102.4;[E,tt1]=toimage(A,ff,tt,length(tt));
for k=1:size(E,1)
bjp(k)=sum(E(k,:))*1/fs;
end
f=(0:N-3)/N*(fs/2);
plot(f,bjp);
xlabel('频率 / Hz');
ylabel('幅值');
数据文件太大了,怎么上传
发表于 2007-6-28 21:23 | 显示全部楼层
本帖最后由 wdhd 于 2016-9-20 13:10 编辑
原帖由 tangaoming 于 2007-6-28 18:05 发表
不,我是最新版的程序,而且matlab是2007a版本的,应该没有什么问题,数据我是用emd分解后取前四行的数据,命令:
[A,ff,tt]=hhspectrum(IMF(1:4,:));
N=61440;fs=102.4;[E,tt1]=toimage(A,ff,tt,length(tt)) ...

根据你的情况,在toimage函数中,对应的处理方式是这样的
      t = varargin{1};
      sply = varargin{2};        % sply = 61440;
      splx = length(t);                % splx = 61440;
而随后调用
im = accumarray([indf(:),indt(:)],A(:),[sply,splx]);
会生成一个sply*splx (即61440*61440)的矩阵,对于matalb来说,这个矩阵太大了,当然会报错。
解决方法:
(1) 如果要画数据全局变化趋势,对数据进行适当的抽取,降低数据量
(2) 如果要研究数据的局部变化,选择部分数据进行绘图

评分

1

查看全部评分

发表于 2007-6-29 11:50 | 显示全部楼层
不是吧,我的数据点长度哪个都是超过10万的都能算啊,而且很快啊:@(
 楼主| 发表于 2007-6-30 09:27 | 显示全部楼层
那我的长度就只有6万,那这个问题应该怎么解决呢?
发表于 2007-6-30 09:30 | 显示全部楼层

回复 #10 tangaoming 的帖子

你也没必要都处理了吧!把最主要的一段,效果最好的一部分,拿出来处理不就可以了吗?
发表于 2007-6-30 10:14 | 显示全部楼层
打个比方研究航空发动机的过度态过程,如慢车-最大,中间转频随转速时刻在变,所以省略哪个都不行:@(
发表于 2007-6-30 10:16 | 显示全部楼层

回复 #12 wy558558558 的帖子

那就做成dll形式的,这样速度还能快一点,但是我一直没碰见过2万的数据,所以也没做过。只是知道有这个方法,具体得请教别的高人了
发表于 2007-6-30 10:29 | 显示全部楼层
本帖最后由 wdhd 于 2016-9-20 13:10 编辑
原帖由 xray 于 2007-6-28 21:23 发表


根据你的情况,在toimage函数中,对应的处理方式是这样的
      t = varargin{1};
      sply = varargin{2};        % sply = 61440;
      splx = length(t);                % splx = 61440;
而随后 ...

我的数据是8192个点,那么全局都画图,是不是一定要开8192×8192的矩阵呢?
发表于 2007-6-30 22:39 | 显示全部楼层

回复 #14 营生 的帖子

你可以看一下sply和splx这两个参数的意义
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-5-13 16:29 , Processed in 0.133669 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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