필터 지우기
필터 지우기

How to inverse all vectors in a struct

조회 수: 12 (최근 30일)
Fredrik
Fredrik 2013년 4월 3일
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

답변 (2개)

Matt Kindig
Matt Kindig 2013년 4월 3일
편집: Matt Kindig 2013년 4월 3일
Structure= structfun(@fliplr, Structure, 'UniformOutput', false)

Jan
Jan 2013년 4월 3일
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.

카테고리

Help CenterFile Exchange에서 Structures에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by