Indirect addressing in structure

7 vues (au cours des 30 derniers jours)
developer
developer le 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

Réponses (3)

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

Connectez-vous pour commenter.


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

Connectez-vous pour commenter.


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

Catégories

En savoir plus sur Structures dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by