How to Change Values of a Field by an Indexing Array?
2 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Rightia Rollmann
am 12 Mär. 2017
Bearbeitet: Jan
am 13 Mär. 2017
Here’s my initial struct:
A(1).B.C = 'a';
A(2).B.C = 'b';
A(3).B.C = 'a';
A(4).B.C = 'a';
I want to change the values of C based on values of Values and indexes of IndexingArray:
Values = {'a', 'b'}
IndexingArray = [1 1 0 1];
So, my struct will be:
A(1).B.C = 'b';
A(2).B.C = 'b';
A(3).B.C = 'a';
A(4).B.C = 'b';
What is the solution?
0 Kommentare
Akzeptierte Antwort
Chad Greene
am 12 Mär. 2017
You could change each element individually via loop. But make sure you add 1 to the indexing array values because Matlab starts indexing at 1, not 0.
for k = 1:length(A)
A(k).B.C = Values(IndexingArray(k)+1);
end
3 Kommentare
Jan
am 13 Mär. 2017
Bearbeitet: Jan
am 13 Mär. 2017
@Rightia Rollmann: The nested struct is a complicated method to represent data. In consequence the method to access the values is not trivial anymore. This loop is efficient and compact. (+1)
Assumingly a typo:
A(k).B.C = Values{IndexingArray(k)+1}; % Curly braces
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Structures finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!