how to make a sorting line by line?
4 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
sharifah shuthairah syed abdullah
le 8 Nov 2018
Commenté : sharifah shuthairah syed abdullah
le 9 Nov 2018
i want to sort the value by line not sorting all number . below is my coding and example what i want
%%read data
clc
clear
%global f d;
%flow
f=[ 0 90 10 23 43 0 0 0 0 0 0 0
90 0 0 0 0 88 0 0 0 0 0 0
10 0 0 0 0 0 26 16 0 0 0 0
23 0 0 0 0 0 0 0 0 0 0 0
43 0 0 0 0 0 0 0 0 0 0 0
0 88 0 0 0 0 0 0 1 0 0 0
0 0 26 0 0 0 0 0 0 0 0 0
0 0 16 0 0 0 0 0 0 96 0 0
0 0 0 0 0 1 0 0 0 0 29 0
0 0 0 0 0 0 0 96 0 0 0 37
0 0 0 0 0 0 0 0 29 0 0 0
0 0 0 0 0 0 0 0 0 37 0 0];
%distance
d=[ 0 36 54 26 59 72 9 34 79 17 46 95
36 0 73 35 90 58 30 78 35 44 79 36
54 73 0 21 10 97 58 66 69 61 54 63
26 35 21 0 93 12 46 40 37 48 68 85
59 90 10 93 0 64 5 29 76 16 5 76
72 58 97 12 64 0 96 55 38 54 0 34
9 30 58 46 5 96 0 83 35 11 56 37
34 78 66 40 29 55 83 0 44 12 15 80
79 35 69 37 76 38 35 44 0 64 39 33
17 44 61 48 16 54 11 12 64 0 70 86
46 79 54 68 5 0 56 15 39 70 0 18
95 36 63 85 76 34 37 80 33 86 18 0];
[r,c]=size(f);
max_i=r;
max_j=r;
max_k=r;
max_q=r;
MaxIt=10;
cp=0.4; % Crossover Percentage
np=2*round(cp*r/2); % Number of Offsprings (Parents)
% % Create Empty Structure
empty_individual.P1=[];
empty_individual.P2=[];
% Create Population Matrix (Array)
pop=repmat(empty_individual,r,1);
for no=1:MaxIt
ID=randperm(r); %PERMUTATION r NOMBOR ..r = 3, 1 2 3, 1 3 2...
x=zeros(r,r);
n=length(ID);
x1=ID;
for i=1:n
for j=1:r
x(j,x1(j))=1;
B(no).mat=x; % keep memory when 0,1 permuation are make in (i),BINARY for RELATION
end
x=zeros(r,r);
end
z=0;xa=B(no).mat;
for i=1:max_i
for j=1:max_j
for k=1:max_k
for q=1:max_q
z= z+ f(i,k).*d(j,q).*xa(i,j).*xa(k,q);
end
end
end
end
no;
G(no,:)=[no z]; %STOR ALL VALUE Z 1 HINGGA MaxI IN MATRIX G
F(no,:)=[no z ID]; %STOR ALL VALUE Z and ID, 1 until MaxIt IN MATRIX F
end
%end
format compact % Suppresses the display of blank lines.
%
zmin=min(F(:,2));
zmax=max(F(:,2));
Iter_zvalue = F %matrix F have no iter, z and ID
% % Sort Population
%
RS = sort(F) % sorted from max to min
i want to sort F by line.. for example
before sorting
1 47764 7 9 4 5 2 1 11 10
2 48878 4 5 10 8 12 11 1 9
3 46388 9 6 4 2 1 10 3 8
4 32014 6 4 12 7 5 1 11 2
5 43468 11 3 8 9 4 10 6 12
6 36962 11 10 4 3 6 5 1 12
7 45400 4 1 10 12 7 11 5 8
8 39032 1 5 9 2 4 10 3 7
9 45742 4 2 5 11 9 3 6 1
10 37436 11 5 3 4 9 10 6 2
After sorting
1 32014 1 1 3 2 1 1 1 1
2 36962 4 2 4 2 2 1 1 2
3 37436 4 3 4 3 4 3 3 2
4 39032 4 4 4 4 4 5 3 7
5 43468 6 5 5 5 5 10 5 8
6 45400 7 5 8 7 6 10 6 8
7 45742 9 5 9 8 7 10 6 9
8 46388 11 6 10 9 9 10 6 10
9 47764 11 9 10 11 9 11 11 12
10 48878 11 10 12 12 12 11 11 12
what i want is that the value in bold just follow the however when i do the sort all the bold number also change.. how can i code so that the bold number did not change, just follow the big number in front.
2 commentaires
madhan ravi
le 8 Nov 2018
honestly I don't see 1 32014 1 1 3 2 1 1 1 1
Iter_zvalue =
Columns 1 through 6
1 45270 10 6 1 8
2 49508 4 1 10 7
3 45194 10 4 9 11
4 45514 2 11 4 10
5 50604 4 3 5 7
6 31486 9 11 10 4
7 47882 3 9 11 1
8 48314 3 4 11 6
9 33334 10 5 9 12
10 35338 12 2 7 4
Columns 7 through 12
7 9 12 2 5 11
3 6 8 2 9 5
6 12 8 5 7 3
5 8 6 1 12 3
11 2 9 6 10 8
6 12 8 1 2 5
7 12 2 6 5 8
2 12 1 8 10 9
1 11 2 4 3 7
10 9 5 6 8 11
Columns 13 through 14
3 4
11 12
2 1
9 7
12 1
7 3
4 10
7 5
8 6
3 1
RS =
Columns 1 through 6
1 31486 2 1 1 1
2 33334 3 2 4 4
3 35338 3 3 5 4
4 45194 4 4 7 6
5 45270 4 4 9 7
6 45514 9 5 9 7
7 47882 10 6 10 8
8 48314 10 9 10 10
9 49508 10 11 11 11
10 50604 12 11 11 12
Columns 7 through 12
1 2 1 1 2 3
2 6 2 1 3 3
3 8 2 2 5 5
5 9 5 2 5 5
6 9 6 4 7 7
6 11 8 5 8 8
7 12 8 6 9 8
7 12 8 6 10 9
10 12 9 6 10 11
11 12 12 8 12 11
Columns 13 through 14
2 1
3 1
3 1
4 3
7 4
7 5
8 6
9 7
11 10
12 12
>>
Réponse acceptée
Stephen23
le 8 Nov 2018
Modifié(e) : Stephen23
le 8 Nov 2018
>> M = [1,45270,10,6,1,8;2,49508,4,1,10,7;3,45194,10,4,9,11;4,45514,2,11,4,10;5,50604,4,3,5,7;6,31486,9,11,10,4;7,47882,3,9,11,1;8,48314,3,4,11,6;9,33334,10,5,9,12;10,35338,12,2,7,4]
M =
1 45270 10 6 1 8
2 49508 4 1 10 7
3 45194 10 4 9 11
4 45514 2 11 4 10
5 50604 4 3 5 7
6 31486 9 11 10 4
7 47882 3 9 11 1
8 48314 3 4 11 6
9 33334 10 5 9 12
10 35338 12 2 7 4
Method one: sortrows:
>> Z = sortrows(M,2);
>> Z(:,1) = 1:size(Z,1)
Z =
1 31486 9 11 10 4
2 33334 10 5 9 12
3 35338 12 2 7 4
4 45194 10 4 9 11
5 45270 10 6 1 8
6 45514 2 11 4 10
7 47882 3 9 11 1
8 48314 3 4 11 6
9 49508 4 1 10 7
10 50604 4 3 5 7
Method two: sort and indexing:
>> [Z,idx] = sort(M(:,2),1);
>> Z = [M(:,1),Z,M(idx,3:end)]
Z =
1 31486 9 11 10 4
2 33334 10 5 9 12
3 35338 12 2 7 4
4 45194 10 4 9 11
5 45270 10 6 1 8
6 45514 2 11 4 10
7 47882 3 9 11 1
8 48314 3 4 11 6
9 49508 4 1 10 7
10 50604 4 3 5 7
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Shifting and Sorting Matrices dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!