vectorize this structure call?
6 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
I have failed at trying to vectorize this. Would love some help!
Thanks!
for l = 1:length(tree.Steps.Step)
wavelength(l) = tree.Steps.Step(l).ATTRIBUTE.Scanning_parameter_value;
for m = 1:length(tree.Steps.Step(l).Far_field.Order)
order_num(m,l) = tree.Steps.Step(l).Far_field.Order(m).ATTRIBUTE.Order_number;
efficiency(m,l) = tree.Steps.Step(l).Far_field.Order(m).ATTRIBUTE.Efficiency;
end
end
1 commentaire
Charlie
le 28 Avr 2013
Did you have any success in vectorizing the outside loop?
I am trying to do a similar operation. I am trying the equivalent of cell2mat(tree.Steps.Step) which seems to successfully vectorise these. I am confused why I can put a structure into a matrix though.
Réponses (1)
Walter Roberson
le 13 Jan 2012
Uggh, but yes it can be done. The following code is partly tested.
for l = 1:length(tree.Steps.Step)
wavelength(l) = tree.Steps.Step(l).ATTRIBUTE.Scanning_parameter_value;
temp1 = cell2mat(struct2cell(tree.Steps.Step(l).Far_field.Order));
temp2 = cell2mat(struct2cell([temp1.ATTRIBUTE]));
order_num(:,l) = [temp2.Order_number];
efficiency(:,l) = [temp2.Efficiency];
end
Possibly there are more efficient ways to handle this using structfun().
2 commentaires
Walter Roberson
le 17 Jan 2012
I am not sure at the moment that removing the outer loop is possible, except through techniques such as cellfun(). I have not worked through it.
Voir également
Catégories
En savoir plus sur Loops and Conditional Statements 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!