How to append a field to an existing structure in a mat file?

27 views (last 30 days)
s.a = rand;
s.b = rand(2);
save('s.mat','s')
load s
s.c = 'yes'
save('s.mat','s') % now the new field is added
Is there any other alternatives?, the '-append' flag is there not sure how to yield success though.
  2 Comments
dpb
dpb on 15 Aug 2019
save(filename,variables,'-append') adds new variables to an existing file.
If a variable already exists in a MAT-file, then save overwrites it with the
value in the workspace.
A struct as the whole is the variable, not a field within the structure.
If the alternative includes that the new data be actually part of an existing struct variable, then I think the answer is "no".
If you would be content with just saving an additional variable but outside the already defined struct, then -append does the job.
If the variable were just an array, matfile would allow indexing including, I believe, extending the size but can't write the dot indexing expression to address a field of a struct
madhan ravi
madhan ravi on 15 Aug 2019
Edited: madhan ravi on 15 Aug 2019
Thanks a lot, dpb. Had the same thoughts :).

Sign in to comment.

Answers (1)

Walter Roberson
Walter Roberson on 15 Aug 2019
clear s
s.a = rand;
s.b = rand(2);
save('s.mat','-struct', 's', '-v7.3');
s = matfile('s.mat', 'writable', true);
s.c = 'yes';
clear s
whos -file s.mat
  4 Comments
Walter Roberson
Walter Roberson on 15 Aug 2019
It does a bit more in that there is no need to explicitly save(): as soon as you create the reference, the new variable is written into the .mat file.

Sign in to comment.

Products


Release

R2018b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!