Indirect addressing in structure
12 views (last 30 days)
Show older comments
Hello, I have structure P that has 20 fileds now if i have to adrress the values indirectly like
x =
4
5
6
9
and i have to addrress 4th ,5th,6th and 9th of values of structure P, how can i do that
Thanks in advance
0 Comments
Answers (3)
Jan
on 8 Sep 2011
You can use STRUCT2CELL to convert the struct to a cell at first:
S = struct('Field1', 1, 'Field2', 2, 'Field3', 3);
C = struct2cell(S);
disp(C{1});
disp(C{3});
% A partial list of values:
x = [1, 3];
D = C(x);
2 Comments
Jan
on 8 Sep 2011
@Andrei: Is FIELDS documented now? Otherwise I'd suggest the older and documented FIELDNAMES.
Harry MacDowel
on 8 Sep 2011
It works like this:-
P.variable = rand(20,1);
x = [4 5 6 9];
for ii=1:4
P.variable(x(ii)) = ii;
end
2 Comments
Andrei Bobrov
on 8 Sep 2011
this question the continuation of this question <http://www.mathworks.com/matlabcentral/answers/15309-variable>
Wesley Ooms
on 8 Sep 2011
If i understand correct, it can be done with the command
'fieldnames' it returns the names of the fields in a cell array.
p.a=1
p.b=2
p.c=3
name=fieldnames(p)
p.(name{1})
0 Comments
See Also
Categories
Find more on Structures in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!