# How to form a structure array variable?

2 views (last 30 days)
Leon on 26 Oct 2020
Commented: Leon on 26 Oct 2020
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 on 26 Oct 2020
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 Comment

Leon on 26 Oct 2020
Exactly what I'm looking for. Many thanks!

Stephen Cobeldick on 26 Oct 2020
Edited: Stephen Cobeldick on 26 Oct 2020
Simpler using indexing:
vec = {'a','b','c'};
Test{1}.(vec{Ind})

#### 1 Comment

Leon on 26 Oct 2020
Thanks for sharing!

R2020b

### Community Treasure Hunt

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

Start Hunting!

Translated by