How to Put an Arrays Elements in a Structure?

1 view (last 30 days)
Rightia Rollmann on 11 Mar 2017
Edited: Stephen23 on 12 Mar 2017
Is there any way to get as same a result as the code below without having that annoying for loop?
A = [1; 1; 0; 0; 0; 0; 1];
for i = 1 : 7
if A(i) == 0
B(i).C = 'w';
elseif A(i) == 1
B(i).C = 'b';
end;
end

Stephen23 on 11 Mar 2017
Edited: Stephen23 on 11 Mar 2017
Here are three ways:
A = [1; 1; 0; 0; 0; 0; 1];
C = {'w','b'};
B = struct('C1',C(1+A)); % if the structure does not exist.
[B.C2] = deal(C{1+A}); % if the structure already exists.
[B.C3] = C{1+A}; % if the structure already exists (not all versions).
Giving:
>> B.C1
ans =
b
ans =
b
ans =
w
ans =
w
ans =
w
ans =
w
ans =
b
>> B.C2
ans =
b
ans =
b
ans =
w
ans =
w
ans =
w
ans =
w
ans =
b
Rightia Rollmann on 11 Mar 2017
Edited: Rightia Rollmann on 11 Mar 2017
B = struct('C1',C(1+A)); % if the structure does not exist.
it beautifully works and I just want to know about how it works step-by-step. I don't fully understand how it calculates the values; especially the part below:
C(1+A)
ans =
'b' 'b' 'w' 'w' 'w' 'w' 'b'
Rightia Rollmann on 11 Mar 2017
Edited: Rightia Rollmann on 11 Mar 2017
I asked it as separate question here!