Как сохранить выходные значения при каждом запуске в одном файле в Matlab - PullRequest
0 голосов
/ 05 декабря 2010

Я получаю два разных (числовых и символьных) выходных значения при каждом запуске, я хочу сохранить эти значения в файле, чтобы использовать их в другом процессе.Я сохранил их в структуре массива, а затем сохранил их в (файл mat) следующим образом:

Sim (i). Нет Sim (i) .Nam

save ('Sim','Sim')

Я хочу сохранить эти значения при каждом запуске в одном и том же файле ... проблема в следующем запуске, я получаю только значения последнего запуска.

Ответы [ 2 ]

0 голосов
/ 06 декабря 2010

Вы пытаетесь постепенно сохранить на диск структуру массив , поэтому вам необходимо каждый раз загружать, добавлять и повторно сохранять массив (что не рекомендуется для очень больших данных) :

% load existing Sim.mat
if exist('Sim.mat','file')
   load('Sim')
end
% check Sim was indeed loaded and if so extend it
if exist('Sim','var') && ~isempty(Sim)
   Sim(end+1).No = No;
   Sim(end+1).Nam = Nam;
else 
   % create a new Sim (presumably the first time)
   Sim(1).No = No;
   Sim(1).Nam = Nam;
end
% save the exented Sim
save Sim Sim

Вышеприведенное предполагает, что у вас есть Нет и Nam , определенные ранее в коде. Если бы вы выполняли это в цикле, лучшим подходом было бы просто сохранить Sim в памяти и сохранить весь массив struct в конце цикла.

0 голосов
/ 05 декабря 2010

Вы можете использовать опцию '-append' SAVE , чтобы добавить данные в сохраненный файл. Тем не менее, вы должны быть осторожны, чтобы сохранять каждый прогон под другим именем, иначе вы просто перезапишите файл сохранения.

Таким образом, вы можете сделать что-то вроде этого:

for i=1:nRuns

%# create Sim

%# make variable name containing 'i'
simName = ['Sim_',num2str(i)];
saveStruct.(simName) = Sim;
%# save field 'Sim_#', where # is the value of i, to a file 'Sim'
%# in the first iteration, we cannot use append, since the file doesn't exist yet.
if i==1
save('Sim','-struct','saveStruct',simName)
else
save('Sim','-struct','saveStruct',simName,'-append')
end

%# to save memory, re-initialize saveStruct
saveStruct = struct;

end %# loop
...