vectorize this structure call?

1 visualización (últimos 30 días)
Tom
Tom el 13 de En. de 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 comentario
Charlie
Charlie el 28 de Abr. de 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.

Iniciar sesión para comentar.

Respuestas (1)

Walter Roberson
Walter Roberson el 13 de En. de 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 comentarios
Tom
Tom el 17 de En. de 2012
Thank you! This does remove the inner loop. Any thoughts on removing the outer loop?
Walter Roberson
Walter Roberson el 17 de En. de 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.

Iniciar sesión para comentar.

Categorías

Más información sobre Structures en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by