Resort struct elements by one field values

Hello,
In a struct
A = struct('f1', [some values], 'f2', [some values])
Can we resort elements of A by increasing order in f1?
For example:
A = struct('f1', [some values], 'f2', [some values])
A.f1 is a 1 X 5 double value [3, 4, 1, 2, 5]
A.f2 is 1 X 5 double value [val 3, val 4, val 1, val 2, val 5]
How to create another struct B as
B = struct('f1', [1 , 2, 3, 4, 5], 'f2', [val 1, val 2, val 3, val 4, val 5])?

댓글 수: 1

One can re-sort in Matlab, and one can resort -to- Matlab, but I didn't know of any Matlab Resort ;-)

댓글을 달려면 로그인하십시오.

 채택된 답변

Matt Tearle
Matt Tearle 2011년 3월 6일

0 개 추천

Would this do it?
a.foo = [3, 4, 1, 2, 5];
a.bar = {'a','b','c','d','e'};
% assuming b already exists
b = a;
% reorder b
[sortfoo,idx] = sort(a.foo);
b.foo = sortfoo;
b.bar = b.bar(idx)

추가 답변 (1개)

Giovanni Soldi
Giovanni Soldi 2011년 3월 6일

0 개 추천

Try in this way:
B = struct('f1',sort(A.f1),'f2',sort(A.f2));

댓글 수: 2

REN
REN 2011년 3월 6일
but in f2 val 3, val 4, val 1, val 2, val 5 can not be sorted
f2 can be only sorted according to value in f1
REN
REN 2011년 3월 6일
even f2 can be sorted by increasing oder,
if try
B = struct('f1',sort(A.f1),'f2',sort(A.f2));
a result maybe
B.f1 = [1 2 3 4 5]
B.f2 = [val 2 val 3 val 4 val 5 val 1]
because val 2 < val 3 < val 4 < val 5 < val 1

댓글을 달려면 로그인하십시오.

카테고리

도움말 센터File Exchange에서 Shifting and Sorting Matrices에 대해 자세히 알아보기

태그

질문:

REN
2011년 3월 6일

Community Treasure Hunt

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

Start Hunting!

Translated by