1

我在 Matlab 2011b 中运行一个需要几天时间的模拟。因此,我在每次迭代时将模拟数据记录在数据结构中,然后记录到文件(*.mat 格式)中。我正在观察我的模拟/数据记录的特殊行为。我观察到记录的 mat 文件一旦超过 256 MB 左右就会被 128 字节文件替换。我不确定大小,但我观察到文件大小接近 256 MB 或以下,然后被 128 字节文件替换。我想知道是否有人有类似的问题。解决方法是什么?是否存在高达 256MB 左右的 Matlab 工作区内存限制?有没有办法改变这个限制?

我正在使用 Matlab 2011b 版本,并使用并行计算工具箱在不同的 Matlab 工作人员中运行我的脚本的多个实例(我的服务器中最多 12 个内核)。他们在每个工人中的模拟都是独立的。Matlab 2011b 在 Linux/CentOS/Mac 上运行,观察结果涵盖所有工作人员,甚至在 Windows 7 中。因此,我认为这是可以调整的 Matlab 设置或配置。非常感谢任何建议或解决方法。

更新:我正在更新我的代码正在执行的示例脚本。迭代指数可以根据模拟时间增加:

%Matlab workspace memory test 
% filename: sim_workspace_mem_test.m
clear; clc;
TotalData=[];
for i=1:1000
   for j=1:1000
    for k=1:100

        data.x=rand(100,100);
        data.y=randi(100,100);

        TotalData{i,j,k}=data;

    end
    filename='SimData';
    save(filename, 'TotalData');
  end
end
4

1 回答 1

2

尝试用不同的名称保存它,并且不那么频繁地保存文件一百万次。

clear; 
TotalData = [];
for i=1:1000
  for j=1:1000
    for k=1:100
        data.x=rand(100,100);
        data.y=randi(100,100);
        TotalData{i,j,k}=data;
    end
  end
    if mod(i,10)==0 %Save every 1 percent progress
       filename=['SimData' num2str(i)]; %Give each savefile a different name
       save([filename, 'TotalData');
    end
end
filename='SimData';
save(filename, 'TotalData'); %Just to be safe, we save the final result
于 2012-12-28T08:51:34.383 回答