Question
Hi, I am trying to perform a parameter sweep on my simulink model using parsim. However, after parsim has been called for several times (after ~24h) Matlab gets killed (I am using Ubuntu 20.04). The ubuntu terminal output from where I started Matlab just shows "Killed". Taking a closer look I noticed that memory usage constantly increases. I stopped the program and shut down the parallel pool (delete(gcp('nocreate'))) which released some memory. I cleared the workspace and nothing is running anymore, however Matlab still takes 40% of the memory and until now I could not find out where this comes from. I tried to abstract the important commands to clarify the structure of my program and my usage of the commands (the original script has much more parameters etc). In short, in nested for-loops combining my parameter values I create an array of Simulink.SimulationInput objects containing batch_size objects, run the simulations using parsim, create another array, run parsim again and so on: start_vals = [0.1, 0.08, 0.06, 0.04, 0.03, 0.02]; stop_vals = [0.04, 0.03, 0.02, 0.01, 0.0, -0.05]; batch_size = 50; model = 'modelName'; cnt_exp = 0; cnt_file = 0; cnt_batch = 0; for start_val = start_vals for stop_val = stop_vals cnt_exp = cnt_exp +1; MP = setParam(MP,start_val, stop_val) simulation_length = 12; cnt_batch = cnt_batch +1; sim_input(cnt_batch) = Simulink.SimulationInput(model); sim_input(cnt_batch) = sim_input(cnt_batch).setVariable('simulation_length',simulation_length); sim_input(cnt_batch) = sim_input(cnt_batch).setVariable('MP',MP); if cnt_batch < batch_size total_runs = cnt_file * batch_size + cnt_exp; if total_runs ~= sum_exp % last incomplete batch has to be processed continue; end end total_runs = cnt_file * batch_size + cnt_exp; try simOut = parsim(sim_input); for res = 1:length(simOut) % Process result end % Save results cnt_file = cnt_file +1; % Reset counters and arrays cnt_exp = 0; cnt_batch = 0; clear sim_input; catch error warning ("Something went wrong") end end end I'd greatly appreciate any help or hint on what is going wrong here!
Expert Answer
John Williams
PhD Expert
Answered Aug 22, 2026
I managed to solve the issue by adapting the usage of sim_input and simOut. As clear apparently does not free the memory in Unix systems and delete somehow didn't work with these arrays, I avoided using clear and I initialized sim_input outside of the for-loop. Furthermore, I put all calculations concerning simOut into a function, hoping that this additional scope would clear the memory. I didn't check the effect of both measures separately, but I think mainly sim_input was causing the problem.
So this is approximately how the code without memory leak looks like now:
start_vals = [0.1, 0.08, 0.06, 0.04, 0.03, 0.02];
stop_vals = [0.04, 0.03, 0.02, 0.01, 0.0, -0.05];
batch_size = 50;
model = 'modelName';
cnt_exp = 0;
cnt_file = 0;
cnt_batch = 0;
for i=1:batch_size
sim_input(i) = Simulink.SimulationInput(model);
end
for start_val = start_vals
for stop_val = stop_vals
cnt_exp = cnt_exp +1;
MP = setParam(MP,start_val, stop_val)
simulation_length = 12;
cnt_batch = cnt_batch +1;
sim_input(cnt_batch) = sim_input(cnt_batch).setVariable('simulation_length',simulation_length);
sim_input(cnt_batch) = sim_input(cnt_batch).setVariable('MP',MP);
if cnt_batch < batch_size
total_runs = cnt_file * batch_size + cnt_exp;
if total_runs ~= sum_exp % last incomplete batch has to be processed
continue;
end
end
total_runs = cnt_file * batch_size + cnt_exp;
try
result_arr = callParSim(sim_input);
% Save results
cnt_file = cnt_file +1;
% Reset counters and arrays
cnt_exp = 0;
cnt_batch = 0;
catch error
warning ("Something went wrong")
end
end
end
function result_arr = callParSim(sim_input)
simOut = parsim(sim_input);
for res = 1:length(simOut)
%Process result, calculate result_arr
end
end
100% Run Guarantee
3-Hour Fast-Track Delivery
Need a Custom Version or Complete Simulation for This Problem?
Our 500+ PhD engineers build, debug, and optimize working MATLAB scripts and Simulink (.slx) models tailored to your exact assignment rubrics with zero plagiarism.
Tested on MATLAB R2024b / R2026a
Turnitin 0% Plagiarism Report
Free 7-Day Revisions Guarantee
Have a different question? Ask here
Related parsim Questions & Solutions
Browse All →
Explore similar technical troubleshooting questions and verified MATLAB solutions:
Ready-to-Run MATLAB & Simulink Projects
Browse All Projects →