Saving a structure array, not fields of it

44 Ansichten (letzte 30 Tage)
Snoopy
Snoopy am 16 Mär. 2023
Kommentiert: Snoopy am 16 Mär. 2023
I have a structure array called s1 in the Workspace. I want to save it as it is so that when I load it, I want to see just s1 in the Workspace, not what is in s1. That is, if I use
save('s1.mat','-struct','s1');
MATLAB saves the content of s1 to s1.mat and when I load s1.mat, the content gets loaded to the Workspace. But I do not want this. I want just s1 to appear in the Workspace.
  2 Kommentare
Stephen23
Stephen23 am 16 Mär. 2023
Bearbeitet: Stephen23 am 16 Mär. 2023
Although you could simply skip the -struct option, the robust approach is to SAVE using -struct exactly as you do now and then LOAD into an output variable:
save('s1.mat','-struct','s1');
s1 = load('s1.mat')
This is more robust than making variables pop into the workspace:
Snoopy
Snoopy am 16 Mär. 2023
Thanks a lot.

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Les Beckham
Les Beckham am 16 Mär. 2023
Bearbeitet: Les Beckham am 16 Mär. 2023
s1 = struct('a', 1, 'b', 2')
s1 = struct with fields:
a: 1 b: 2
save('s1.mat', 's1') % don't use the '-struct' option
clearvars
whos
load('s1.mat')
whos
Name Size Bytes Class Attributes s1 1x1 352 struct
Another option:
s1 = struct('a', 1, 'b', 2')
s1 = struct with fields:
a: 1 b: 2
save('s1.mat', '-struct', 's1')
s2 = load('s1.mat')
s2 = struct with fields:
a: 1 b: 2
whos
Name Size Bytes Class Attributes s1 1x1 352 struct s2 1x1 352 struct
isequal(s1, s2)
ans = logical
1

Weitere Antworten (0)

Kategorien

Mehr zu Structures finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by