10/23/2006

排序的問題

陣列的排序常按大小以升幂(asend)或降幂(descend)排列,其指令型式為sort()或sortrows()。這兩種指令之結果略有不同,茲以magic(6)所產生的矩陣為例:


>> AA=magic(6)

AA =

35 1 6 26 19 24
3 32 7 21 23 25
31 9 2 22 27 20
8 28 33 17 10 15
30 5 34 12 14 16
4 36 29 13 18 11

>> sort(AA)%依行向方式排列

ans =

3 1 2 12 10 11
4 5 6 13 14 15
8 9 7 17 18 16
30 28 29 21 19 20
31 32 33 22 23 24
35 36 34 26 27 25

>> sort(AA,2)%依列向方式排列


ans =

1 6 19 24 26 35
3 7 21 23 25 32
2 9 20 22 27 31
8 10 15 17 28 33
5 12 14 16 30 34
4 11 13 18 29 36

>> sort(AA,2,'descend')%依列向且以降幂方式排列

ans =

35 26 24 19 6 1
32 25 23 21 7 3
31 27 22 20 9 2
33 28 17 15 10 8
34 30 16 14 12 5
36 29 18 13 11 4

%可以依
>> D=[[2 2 3 3 4 4]' AA(:,[1:3])] %先造一個新矩陣

D =

2 35 1 6
2 3 32 7
3 31 9 2
3 8 28 33
4 30 5 34
4 4 36 29

>> sortrows(D,[1 2]) %依第一及第二行排列

ans =

2 3 32 7
2 35 1 6
3 8 28 33
3 31 9 2
4 4 36 29
4 30 5 34

沒有留言: