misbehaving of sort function, for looping the first and last rows not orienting to my expected results and well as specified indexes not corrects

1 view (last 30 days)
Hi misbehaving of sort function, for looping the first and last rows not orienting to my expected results and well as specified indexes not corrects. Any assistance will be appreciated too. see the code:
>> a=[7 9 5 7; 1 5 8 9; 1 2 7 3;10 0 9 9]
[A B]=sort(a)
a =
7 9 5 7
1 5 8 9
1 2 7 3
10 0 9 9
A =
1 0 5 3
1 2 7 7
7 5 8 9
10 9 9 9
B =
2 4 1 3
3 3 3 1
1 2 2 2
4 1 4 4
>> [sizr sizc]=size(a);
aaa=zeros(sizr,sizc);
for i=1:4
if(A(B(i,3),3)>A(B(i,2),2)), aaa(B(i,3),:)=a(B(i,3),:), aA=A(B(i,3),3)
else, aaa(B(i,2),:)=a(B(i,2),:), aA=A(B(i,2),2)
end, end
aaa =
0 0 0 0
0 0 0 0
0 0 0 0
10 0 9 9
aA = 9
aaa =
0 0 0 0
0 0 0 0
1 2 7 3
10 0 9 9
aA = 8
aaa =
0 0 0 0
1 5 8 9
1 2 7 3
10 0 9 9
aA = 7
aaa =
0 0 0 0
1 5 8 9
1 2 7 3
10 0 9 9
aA = 9
  6 Comments
Roger Stafford
Roger Stafford on 13 Apr 2017
As far as I can make out, you are expecting the sorting to occur along the rows, but the ‘sort’ function sorts along the columns unless you specify otherwise.
sort(a,1) sorts along each column
sort(a,2) sorts along each row
sort(a) by default sorts along each column

Sign in to comment.

Accepted Answer

Eng. Fredius Magige
Eng. Fredius Magige on 21 Apr 2017
Edited: Stephen23 on 21 Apr 2017
Hi all my collegues, I got best answer by manipulation of sort as:
[AA BB]=sort(Graptable(:,[12:21,1:11])); Graptable = Graptable (BB,[1:21]);
Graptable(2*JmRow+1:end,:)=[ ]; Graptable (:,22)= 0;
for ii=1:JmRow
if(Graptable(ii,12)~=0&&Graptable(ii,13)~=0), Graptable (ii,:)=0;
else, end, end
Graptable (JmRow+1:end,22)=Graptable(JmRow+1:end,12);
Graptable (1:JmRow,22)=Graptable(1:JmRow,13);
SOORTING1=sortrows(Graptable,[22,12]); SOORTING1(1:JmRow,:)=[];%SOORTING1(:,22)=[ ];
Thanks MatLab community too

More Answers (0)

Community Treasure Hunt

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

Start Hunting!