以下是我在m.file中使用的代码:
for idx = i_start:i_end
CheckTemp = (timeTick > time_tr(idx)) .* (timeTick <= time_tr(idx));
CheckTemp2 = find(CheckTemp);
IdxS = min(CheckTemp2);
IdxE = max(CheckTemp2);
......
该timeTick
阵列是大约100MB的双精度阵列,idx
范围从2000到4000。因为我一步一步检查了m文件,发现在循环之前,我的内存提交费用是:817M / 5422M。有很多可用空间,对吗?
但是我的Matlab v6.5告诉我:Error in '.*', out of memory
……这让我真的很困惑。
另外,我之前逐行执行了代码。并没有发生错误。我真的不知道为什么 我希望有人可以帮忙...
如果您需要更多信息,请发表评论。
如果timeTick
和timeTr
被排序,则可以这样做:
timeTick
timeTick
和timeTr
代码如下所示(请注意,您必须设置time_tr(end+1) = inf
代码才能正常工作)。
%This code requires last entry of time_tr to be inf, eg. time_tr(end+1)=inf;
n_tick = length(timeTick);
n_tr = length(time_tr);
IdxS = NaN(n_tr, 1);
IdxE = NaN(n_tr, 1);
i_tick = 1;
i_tr = 1;
window_start_i_tick = 1;
window_end = time_tr(1);
while(i_tick <= n_tick)
t = timeTick(i_tick);
if(t > window_end)
IdxS(i_tr) = window_start_i_tick;
IdxE(i_tr) = i_tick - 1;
window_start_i_tick = i_tick;
i_tr = i_tr + 1;
while(t > time_tr(i_tr)) %take care of case that we skip past a window/windows
i_tr = i_tr + 1;
end
window_end = time_tr(i_tr);
end
i_tick = i_tick + 1;
end
IdxS(i_tr) = window_start_i_tick;
IdxE(i_tr) = i_tick;
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句