How to form a structure array variable?

I have a structure array like the below
Test{1}.a = [1; 2; 3];
Test{1}.b = [7; 3; 22];
Test{1}.c = [4; 9; 22];
...
If I have a variable (Var) that can be either a, or b, or c, ...
If Ind == 1;
Var = 'a';
elseif Ind == 2
Var = 'b';
elseif Ind == 3
Var = 'c';
end
How do I specify Test{1}.Var, so that when Ind == 1, it will be Test{1}.a, and so on?
Many thanks!

 採用された回答

Cris LaPierre
Cris LaPierre 2020 年 10 月 26 日

0 投票

See Steven Lord's reply here. Basically, something like this:
Test{1}.a = [1; 2; 3];
Test{1}.b = [7; 3; 22];
Test{1}.c = [4; 9; 22];
Ind = 2;
if Ind == 1
Var = {'a'};
elseif Ind == 2
Var = {'b'};
elseif Ind == 3
Var = {'c'};
end
Test{1}.(Var{1})
ans = 3×1
7 3 22

1 件のコメント

Leon
Leon 2020 年 10 月 26 日
Exactly what I'm looking for. Many thanks!

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

その他の回答 (1 件)

Stephen23
Stephen23 2020 年 10 月 26 日
編集済み: Stephen23 2020 年 10 月 26 日

0 投票

Simpler using indexing:
vec = {'a','b','c'};
Test{1}.(vec{Ind})

1 件のコメント

Leon
Leon 2020 年 10 月 26 日
Thanks for sharing!

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

カテゴリ

ヘルプ センター および File ExchangeData Types についてさらに検索

製品

リリース

R2020b

質問済み:

2020 年 10 月 26 日

コメント済み:

2020 年 10 月 26 日

Community Treasure Hunt

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

Start Hunting!

Translated by