Indirect addressing in structure

16 Ansichten (letzte 30 Tage)
developer
developer am 8 Sep. 2011
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

Antworten (3)

Jan
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
Andrei Bobrov am 8 Sep. 2011
Hi Jan! Another way
fld = fields(P)
D = cellfun(@(x)P.(x),fld(x),'un',0);
Jan
Jan am 8 Sep. 2011
@Andrei: Is FIELDS documented now? Otherwise I'd suggest the older and documented FIELDNAMES.

Melden Sie sich an, um zu kommentieren.


Harry MacDowel
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
Harry MacDowel
Harry MacDowel am 8 Sep. 2011
ah maybe I misunderstood your question. =)
Andrei Bobrov
Andrei Bobrov am 8 Sep. 2011
this question the continuation of this question <http://www.mathworks.com/matlabcentral/answers/15309-variable>

Melden Sie sich an, um zu kommentieren.


Wesley Ooms
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})

Kategorien

Mehr zu Programming 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!

Translated by