How to Put an Arrays Elements in a Structure?

1 回表示 (過去 30 日間)
Rightia Rollmann
Rightia Rollmann 2017 年 3 月 11 日
編集済み: Stephen23 2017 年 3 月 12 日
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
Stephen23 2017 年 3 月 11 日
編集済み: Stephen23 2017 年 3 月 11 日
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
  6 件のコメント
Rightia Rollmann
Rightia Rollmann 2017 年 3 月 11 日
編集済み: Rightia Rollmann 2017 年 3 月 11 日
My question is about your code.
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
Rightia Rollmann 2017 年 3 月 11 日
編集済み: Rightia Rollmann 2017 年 3 月 11 日
I asked it as separate question here!

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeStructures についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by