Initializing a struct with n-d fields.
94 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Hi, I have a struct with an indeterminate number of fields. For (very good) reasons I don't want to go into, I want to initialize each of these fields with NaNs. The closest I can find is a post by Shane, in 200 http://blogs.mathworks.com/loren/2008/02/01/structure-initialization/#15%20Initializing%20a%20struct%3Estructure-initialization/#15
that suggests something along the lines of
data = repmat(struct('field1',NaN(2,2,2),'fieldN',NaN(5)),[1,2,3,4]);
What I would like to do instead is build the structure in a loop, something along the lines of:
data = struct();
for ii=1:7;
data = repmat(struct(field{ii},NaN(2,2,2)),[1,2,3,4]);
end
But of course this doesn't work because the loop line wipes out the pre-existing struct.
There is presumably a way of initializing additional fields in a similar way, without having to do everything in the one line as Shane suggests. Obviously I could build a long string in a loop and evaluate it, but that's a pain.
Any advice would be most appreciated.
0 Commenti
Risposta accettata
Più risposte (2)
Julian
il 19 Nov 2013
An alternative approach just using builtin functions
C = cell(numel(field),1,2,3,4); % pre-allocate cell-array to required size
C(:) = {NaN(2,2,2)}; % populate cell-array
C = cell2struct(C,field); % convert to struct array, field names along dimension 1
0 Commenti
David Sanchez
il 19 Nov 2013
Initialization as NaN of three fields called field1, field2, field3:
for k=1:3;
data.(strcat('field',num2str(k))) = NaN;
end
>> data
data =
field1: NaN
field2: NaN
field3: NaN
0 Commenti
Vedere anche
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!