Saving a structure array, not fields of it

43 visualizzazioni (ultimi 30 giorni)
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 Commenti
Stephen23
Stephen23 il 16 Mar 2023
Modificato: Stephen23 il 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:

Accedi per commentare.

Risposta accettata

Les Beckham
Les Beckham il 16 Mar 2023
Modificato: Les Beckham il 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

Più risposte (0)

Categorie

Scopri di più su Structures in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by