Adding multiple fields and values to structure array
66 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Centauri Jolene
il 19 Apr 2019
Commentato: Centauri Jolene
il 20 Apr 2019
I have a code in which I am looping through many files, and for each file, I'm adding fields and values to a structure array.
The code is quite repetitive and I'm wondering if there is a way to shorten it a bit.
Right now it looks like this:
data(k).pairNum = pairNum;
data(k).level = level;
data(k).trialNum = trialNum;
data(k).success = win;
data(k).numWins = numWins;
data(k).totalTime = totalTime;
data(k).timeUntilSuccess = timeUntilSuccess;
data(k).totalTime = totalTime;
data(k).initialSpread = initialSpread;
data(k).initialCOM = initialCOM;
data(k).D1_distance = D1_distance;
data(k).D2_distance = D2_distance;
But im just curious if there is a way to make it work by doing something like this:
data(k).[pairNum, level, trialNum, win, numWins, totalTime] = pairNum, level, trialNum, win, numWins, totalTime;
2 Commenti
Risposta accettata
Walter Roberson
il 19 Apr 2019
Provided you are setting all of the fields of data(k), then you can use
data(k) = struct('PairNum', pairNum, 'level', level, 'trialNum', trialNum, ....)
which is no shorter.
Or you could use
names = {'pairNum', 'level', 'trialNum', 'success' ... };
and then in the loop
data(k) = cell2struct( {pairNum, level, trialNum, win, ...}, names, 2);
Again, these only work if you are setting all of the fields.
If you have all of the values ahead of time you can create the entire struct:
data = struct('PairNum', cell_with_all_pairnum, 'level', cell_with_all_level, ....)
The number of structure members created will be the same as the number of entries in the cells you pass.
If any of the fields are the same for all of the members, then instead of a cell, you can pass the actual value at that location, not in a cell.
Più risposte (0)
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!