Resort struct elements by one field values

조회 수: 4 (최근 30일)
REN
REN 2011년 3월 6일
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
Walter Roberson
Walter Roberson 2011년 3월 6일
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일
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일
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

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

카테고리

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