vectorize this structure call?

5 Ansichten (letzte 30 Tage)
Tom
Tom am 13 Jan. 2012
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 Kommentar
Charlie
Charlie am 28 Apr. 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.

Melden Sie sich an, um zu kommentieren.

Antworten (1)

Walter Roberson
Walter Roberson am 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 Kommentare
Tom
Tom am 17 Jan. 2012
Thank you! This does remove the inner loop. Any thoughts on removing the outer loop?
Walter Roberson
Walter Roberson am 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.

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Loops and Conditional Statements 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