Indirect addressing in structure
5 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
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 Kommentare
Antworten (3)
Jan
am 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 Kommentare
Andrei Bobrov
am 8 Sep. 2011
Hi Jan! Another way
fld = fields(P)
D = cellfun(@(x)P.(x),fld(x),'un',0);
Jan
am 8 Sep. 2011
@Andrei: Is FIELDS documented now? Otherwise I'd suggest the older and documented FIELDNAMES.
Harry MacDowel
am 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 Kommentare
Andrei Bobrov
am 8 Sep. 2011
this question the continuation of this question <http://www.mathworks.com/matlabcentral/answers/15309-variable>
Wesley Ooms
am 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 Kommentare
Siehe auch
Kategorien
Mehr zu Structures finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!