MATLAB: Add structs in a saved array of structures

addMATLABsavestruct

Hello,
I have a function (fun1) which generates several results (r1,r2,r3…). I organise them in a struct.
results=struct('results1',{r1},'results2',{r2},'results3',{r3},...);
This struct is the output of the funtion.
I have to run this same function for several variables and I want to keep all the results in the same array of structs. Therefore could I do:
results(1)=fun1(variable1,otherinputs);
results(2)=fun1(variable2,otherinputs);
results(3)=fun1(variable3,otherinputs);
...
However, the function deals with huge sets of data so it can take on the order of 45 minutes to run, and I have to run it more than 20 times. Is there any way to save the output struct so that each time that I run the function it adds the output to the previous ones? I mean to do something similar to what I do in the workspace but directly in a .mat file.
Thanks!

Best Answer

You can use the matfile function to write directly to a mat file
a = matfile('newfile.mat','Writable',true);
n = 10;
for i = 1:n
% your code
a.mystruct(i,1) = struct('abc',123,'def',456);
end
clear a;