【发布时间】:2017-11-30 21:22:18
【问题描述】:
以下是我在 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... 这让我很困惑。
另外,我之前逐行执行了代码。并且没有发生错误。我真的不知道为什么。希望有大神帮忙。。。
如果您需要更多信息,请发表评论。
【问题讨论】:
-
time_tick 是排序数组吗?如果是这样,可能会有更好的实现,它需要更少的内存。
-
time_tr(idx) 是单个标量吗?我很困惑,CheckTemp 不会总是一个零数组,因为 timeTick 不能同时是 > time_tr(idx) 和
-
time_tr 和 timeTick 是否已排序?如果是这样,这可以通过数组单次更有效地完成
-
没有必要分配 any 与 timeTick 一样大的数组,这是
.*、>和<=命令隐式完成的。
标签: matlab out-of-memory