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

조회 수: 28 (최근 30일)
madhan ravi
madhan ravi 2019년 8월 15일
댓글: madhan ravi 2019년 8월 15일
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
dpb
dpb 2019년 8월 15일
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 2019년 8월 15일
편집: madhan ravi 2019년 8월 15일
Thanks a lot, dpb. Had the same thoughts :).

댓글을 달려면 로그인하십시오.

답변 (1개)

Walter Roberson
Walter Roberson 2019년 8월 15일
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
Walter Roberson
Walter Roberson 2019년 8월 15일
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 2019년 8월 15일
Thanks, Bruno. I didn't notice it properly.

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Workspace Variables and MAT-Files에 대해 자세히 알아보기

제품


릴리스

R2018b

Community Treasure Hunt

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

Start Hunting!

Translated by