Saving a structure array, not fields of it

4 vues (au cours des 30 derniers jours)
Snoopy
Snoopy le 16 Mar 2023
Commenté : Snoopy le 16 Mar 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 commentaires
Stephen23
Stephen23 le 16 Mar 2023
Modifié(e) : Stephen23 le 16 Mar 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 le 16 Mar 2023
Thanks a lot.

Connectez-vous pour commenter.

Réponse acceptée

Les Beckham
Les Beckham le 16 Mar 2023
Modifié(e) : Les Beckham le 16 Mar 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

Plus de réponses (0)

Catégories

En savoir plus sur Workspace Variables and MAT-Files dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by