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

13 Ansichten (letzte 30 Tage)
madhan ravi
madhan ravi am 15 Aug. 2019
Kommentiert: madhan ravi am 15 Aug. 2019
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 Kommentare
dpb
dpb am 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 am 15 Aug. 2019
Bearbeitet: madhan ravi am 15 Aug. 2019
Thanks a lot, dpb. Had the same thoughts :).

Melden Sie sich an, um zu kommentieren.

Antworten (1)

Walter Roberson
Walter Roberson am 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 Kommentare
Walter Roberson
Walter Roberson am 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.
madhan ravi
madhan ravi am 15 Aug. 2019
Thanks, Bruno. I didn't notice it properly.

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Workspace Variables and MAT Files finden Sie in Help Center und File Exchange

Produkte


Version

R2018b

Community Treasure Hunt

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

Start Hunting!

Translated by