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

2 次查看(过去 30 天)
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?

采纳的回答

Chad Greene
Chad Greene 2017-3-12
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 个评论
Jan
Jan 2017-3-13
编辑:Jan 2017-3-13
@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

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Resizing and Reshaping Matrices 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by