tangaoming 发表于 2007-6-28 15:53

请教toimage参数!

=toimage(A,ff,tt,length(tt));我tt长度是61440,一运行它说变量长度超过限制了,这个怎么处理,谢谢

zhlong 发表于 2007-6-28 16:23

回复 #1 tangaoming 的帖子

toimage好像没有限制信号长度的语句,请给出你的原始出错信息。

tangaoming 发表于 2007-6-28 16:37

??? Error using ==> accumarray
Maximum variable size allowed by the program is exceeded.

Error in ==> toimage at 98
im = accumarray(,A(:),);

zhangnan3509 发表于 2007-6-28 16:39

回复 #1 tangaoming 的帖子

请把你程序贴出来,这样头疼医头,脚疼医脚的分析方法是不行的

zhlong 发表于 2007-6-28 16:47

你用的是2007年新版的程序,也许可以试试老版中的toimage
请把你程序贴出来,这样头疼医头,脚疼医脚的分析方法是不行的
nod,也许是前面输入参数的问题也说不定

zhangnan3509 发表于 2007-6-28 16:54

我建议如果是MATLAB版本低于7.0还是不要装新版了,也许是因为版本的问题。我想起了昨天有会员少了 accumarray函数也是求不出时频图。好像也是这个 accumarray函数的问题。

tangaoming 发表于 2007-6-28 18:05

不,我是最新版的程序,而且matlab是2007a版本的,应该没有什么问题,数据我是用emd分解后取前四行的数据,命令:
=hhspectrum(IMF(1:4,:));
N=61440;fs=102.4;=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('幅值');
数据文件太大了,怎么上传

xray 发表于 2007-6-28 21:23

本帖最后由 wdhd 于 2016-9-20 13:10 编辑

原帖由 tangaoming 于 2007-6-28 18:05 发表
不,我是最新版的程序,而且matlab是2007a版本的,应该没有什么问题,数据我是用emd分解后取前四行的数据,命令:
=hhspectrum(IMF(1:4,:));
N=61440;fs=102.4;=toimage(A,ff,tt,length(tt)) ...
根据你的情况,在toimage函数中,对应的处理方式是这样的
      t = varargin{1};
      sply = varargin{2};      % sply = 61440;
      splx = length(t);                % splx = 61440;
而随后调用
im = accumarray(,A(:),);
会生成一个sply*splx (即61440*61440)的矩阵,对于matalb来说,这个矩阵太大了,当然会报错。
解决方法:
(1) 如果要画数据全局变化趋势,对数据进行适当的抽取,降低数据量
(2) 如果要研究数据的局部变化,选择部分数据进行绘图

wy558558558 发表于 2007-6-29 11:50

不是吧,我的数据点长度哪个都是超过10万的都能算啊,而且很快啊:@(

tangaoming 发表于 2007-6-30 09:27

那我的长度就只有6万,那这个问题应该怎么解决呢?

zhangnan3509 发表于 2007-6-30 09:30

回复 #10 tangaoming 的帖子

你也没必要都处理了吧!把最主要的一段,效果最好的一部分,拿出来处理不就可以了吗?

wy558558558 发表于 2007-6-30 10:14

打个比方研究航空发动机的过度态过程,如慢车-最大,中间转频随转速时刻在变,所以省略哪个都不行:@(

zhangnan3509 发表于 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的矩阵呢?

zhlong 发表于 2007-6-30 22:39

回复 #14 营生 的帖子

你可以看一下sply和splx这两个参数的意义
页: [1] 2
查看完整版本: 请教toimage参数!