How to inverse all vectors in a struct

4 vues (au cours des 30 derniers jours)
Fredrik
Fredrik le 3 Avr 2013
Hi, I have several structs with vectors in all of them. For some reason I have all vectors in wrong order. An example could be that they are 1 4 7 9 8 but I would like it to be 8 9 7 4 1. I wonder if there is a way to inverse all of the vectors inside a struct without having to call Structure.A, Structure.B etc as it would both be time consuming, line consuming and inconvenient!
I guess I am looking for something like fliplr(Structure) instead of fliplr(Structure.A)
All help is much appreciated! Fredrik

Réponses (2)

Matt Kindig
Matt Kindig le 3 Avr 2013
Modifié(e) : Matt Kindig le 3 Avr 2013
Structure= structfun(@fliplr, Structure, 'UniformOutput', false)

Jan
Jan le 3 Avr 2013
Compare the structfun approach with a loop:
f = fieldnames(S);
for k = 1:length(f)
af = f{k};
S.(af) = S.(af)(end:-1:1);
end
Inside structfun a loop is required also. Calling the function fliplr() has a certain overhead, so reverting the vectors locally is an advantage.

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