I appreciate if anyone could help me for writing below sorting for different vectors: Assumed :
A1= (a1,a2)
A2= (a3,a4)
A3=(a5,a6)
.
.
An= (ai, aj)
How can I sort A1, A2, … ,An. by just first member comparison descending order (1) or second comparison (2), or both member comparison (3): solution : (for example)
1) a3>a1>a5 ---> output: A2, A1, A5...
or
2) a6>a4>a2 ----> output: A3,A2,A1
3) a1>a3 >a5 and a2>a4 >a6 --->output: A1, A2,A3

 채택된 답변

Star Strider
Star Strider 2014년 8월 26일

1 개 추천

The sortrows function is probably what you want. See specifically Sort Rows of a Matrix

댓글 수: 6

Omid Ameri Sianaki
Omid Ameri Sianaki 2014년 8월 26일
편집: Omid Ameri Sianaki 2014년 8월 26일
Thank you Star Strider, The out put is very important for me. I want to reach to A1, A2, A3. after sorting the matrix I can not figure out A1,A2,A3 orders. Can you help me please.
Star Strider
Star Strider 2014년 8월 26일
My pleasure!
Can you be a bit more specific about what A1 ... An are, and what a1, a2, ... ai, aj are? Are they individual array elements, vectors, or something else?
Omid Ameri Sianaki
Omid Ameri Sianaki 2014년 8월 26일
편집: Star Strider 2014년 8월 26일
Thank you. For example:
a=[1,5,9];
b=[2,6,10];
c=[3,7,11];
d=[4,8,12];
e=[a;d;b;c]
B=sortrows(e)
then the answer is
B =
1 5 9
2 6 10
3 7 11
4 8 12
so I want the above matrix (solution)to show me the vectors name instead of value. for above example B=[a;b;c;d] I mean I made e with vector names but I received a vector with values how can I reach to a sorted matrix with vector names?
Star Strider
Star Strider 2014년 8월 26일
편집: Image Analyst 2014년 8월 26일
Superb! It took some experimenting, but this seems to work:
a=[1,5,9];
b=[2,6,10];
c=[3,7,11];
d=[4,8,12];
ec = {'a' 'd' 'b' 'c'}; % Matrix as cell array by vector name
e = cell2mat(cellfun(@eval, ec, 'uni',0)') % Create matrix from ‘ec’
[B,I] = sortrows(e) % Sort rows
vn = ec(I) % Sorted vector names
I created a cell array of the vector names in ‘ec’ in the order you want them in matrix ‘e’. I then created matrix ‘e’ by evaluating the cell array in the order you specified, using cellfun and then creating a numerical matrix from it with cell2mat. I then sorted ‘e’ with sortrows, and used the index vector ‘I’ to create the sorted array names in ‘vn’.
My code produces:
e =
1 5 9
4 8 12
2 6 10
3 7 11
B =
1 5 9
2 6 10
3 7 11
4 8 12
I =
1
3
4
2
vn =
'a' 'b' 'c' 'd'
Is that what you want?
Omid Ameri Sianaki
Omid Ameri Sianaki 2014년 8월 26일
편집: Image Analyst 2014년 8월 26일
Awesome! Perfect Answer. Thank you very much. Yes it was what I wanted and I appreciate for your time.
Star Strider
Star Strider 2014년 8월 26일
My pleasure!
That was a really fun problem for me!

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

추가 답변 (0개)

카테고리

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

질문:

2014년 8월 26일

편집:

2014년 8월 26일

Community Treasure Hunt

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

Start Hunting!

Translated by