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

27 ビュー (過去 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 Center および File ExchangeWorkspace 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