请教toimage参数!
=toimage(A,ff,tt,length(tt));我tt长度是61440,一运行它说变量长度超过限制了,这个怎么处理,谢谢回复 #1 tangaoming 的帖子
toimage好像没有限制信号长度的语句,请给出你的原始出错信息。 ??? Error using ==> accumarrayMaximum variable size allowed by the program is exceeded.
Error in ==> toimage at 98
im = accumarray(,A(:),);
回复 #1 tangaoming 的帖子
请把你程序贴出来,这样头疼医头,脚疼医脚的分析方法是不行的 你用的是2007年新版的程序,也许可以试试老版中的toimage请把你程序贴出来,这样头疼医头,脚疼医脚的分析方法是不行的
nod,也许是前面输入参数的问题也说不定 我建议如果是MATLAB版本低于7.0还是不要装新版了,也许是因为版本的问题。我想起了昨天有会员少了 accumarray函数也是求不出时频图。好像也是这个 accumarray函数的问题。 不,我是最新版的程序,而且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('幅值');
数据文件太大了,怎么上传 本帖最后由 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) 如果要研究数据的局部变化,选择部分数据进行绘图 不是吧,我的数据点长度哪个都是超过10万的都能算啊,而且很快啊:@( 那我的长度就只有6万,那这个问题应该怎么解决呢?
回复 #10 tangaoming 的帖子
你也没必要都处理了吧!把最主要的一段,效果最好的一部分,拿出来处理不就可以了吗? 打个比方研究航空发动机的过度态过程,如慢车-最大,中间转频随转速时刻在变,所以省略哪个都不行:@(回复 #12 wy558558558 的帖子
那就做成dll形式的,这样速度还能快一点,但是我一直没碰见过2万的数据,所以也没做过。只是知道有这个方法,具体得请教别的高人了 本帖最后由 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的矩阵呢?
回复 #14 营生 的帖子
你可以看一下sply和splx这两个参数的意义
页:
[1]
2