Matlab "Out of Memory"解决方案?

标签 matlab memory

fname = dir('*sir');
[tmp, head] = loadsir(fname(1).name);
dayH = zeros(length(fname),size(tmp,1),size(tmp,2));

% use temporary array to simplify 3d array creation
for i=1:1
  tmp = loadsir(fname(i).name);
  dayH(i,:,:) = tmp;
end

我上面有这段代码,但我得到的只是:

Error using zeros
Out of memory
Error in dataAnalysis (line 4)
dayH = zeros(length(fname),size(tmp,1),size(tmp,2));

最佳答案

Matlab 中的数组存储在连续的内存块中。您可能会耗尽内存,因为您的计算机没有足够大的连续内存块来存储整个矩阵。

您需要:

  1. 减小矩阵的大小,或
  2. 使用允许内存以不连续 block 的形式保存的变量类型。

如果您不打算填充整个矩阵,请尝试按照 @Dennis Jaheruddin 的建议使用稀疏矩阵来减小其大小

如果您打算填充矩阵,请考虑将其拆分为单元格。

zeroMat = zeros( size(tmp,1), size(tmp,2) );
daysH = repmat( {zeroMat}, [length(fname), 1] );

每个单元格仍需要足够的内存来存储大小为 size(tmp,1) x size(tmp2) 的矩阵。除非这些数字很大,否则应该没问题。

关于Matlab "Out of Memory"解决方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13466770/

相关文章:

c - 在 ARM Cortex-R4 上运行无 MMU Linux

r - 为什么 lm 内存不足,而矩阵乘法对系数工作正常?

c# - 使用 process.WorkingSet64 测量内存使用情况出现异常

java 堆内存更改后 MATLAB 将无法打开

matlab - 使用 sprintf 打印具有可变数量元素的向量

python - 从matlab中直接在python中使用sklearn

r - MATLAB 和 R 之间的执行时间差异很大

memory - 何时在内存映射 PCIe 配置中创建 TLP 数据包?

MatLab:如何定义依赖于其他属性的(非恒定)属性?

c++ - 虚拟机和内存访问问题