How to Change Values of a Field by an Indexing Array?

2 Ansichten (letzte 30 Tage)
Rightia Rollmann
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?

Akzeptierte Antwort

Chad Greene
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
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
Chad Greene
Chad Greene am 13 Mär. 2017
Ah, yes, curly braces. Thanks for catching that Jan!

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

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!

Translated by