How to inverse all vectors in a struct

11 views (last 30 days)
Fredrik
Fredrik on 3 Apr 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

Answers (2)

Matt Kindig
Matt Kindig on 3 Apr 2013
Edited: Matt Kindig on 3 Apr 2013
Structure= structfun(@fliplr, Structure, 'UniformOutput', false)

Jan
Jan on 3 Apr 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.

Categories

Find more on Structures in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!