How I use fprintf to acess a struct?
12 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Gilberto Santos
le 15 Fév 2018
Commenté : Guillaume
le 16 Fév 2018
I have defined the struct written down.
SATS_Hour = struct('SATS_H0',[],'SATS_H1',[],'SATS_H2',[],'SATS_H3',[],...
'SATS_H4',[],'SATS_H5',[],'SATS_H6',[],'SATS_H7',[],...
'SATS_H8',[],'SATS_H9',[],'SATS_H10',[],'SATS_H11',[],...
'SATS_H12',[],'SATS_H13',[],'SATS_H14',[],'SATS_H15',[],...
'SATS_H16',[],'SATS_H17',[],'SATS_H18',[],'SATS_H19',[],...
'SATS_H20',[],'SATS_H21',[],'SATS_H22',[],'SATS_H23',[]);
I have to access a struct to write on each individual SATS_Hour.SATS_H0 for the first time of my loop, it contains 48 loops. The number after the letter H, of each variable, must change up to the last one 47.
How can I do this?
Using fprintf or other Matlab command?
Thanks for the help.
Gilberto Fernandes
0 commentaires
Réponse acceptée
Guillaume
le 15 Fév 2018
Modifié(e) : Guillaume
le 15 Fév 2018
Numbering variables or structure fields is a bad idea. Any time you start naming things sequentially you need to think of using an array instead. Here, for example you'd be better off using a cell array. I.e use:
SATS_Hour = cell(23, 1); %instead of a structure
for idx = 1:23
SATS_Hour{idx} = ...
end
Indexing is always easier than awkward name construction via sprintf. If you're hell bent on using a structure:
for idx = 1:23
SATS_Hour.(sprintf('SATS_H%d', idx)) = ...
end
As you see, it's more complicated, less readable, and probably slower.
Plus de réponses (2)
Voir également
Catégories
En savoir plus sur Dates and Time 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!