我有陣列說 「一個」如何在MATLAB中對第二排排序二維數組?
一個=
1 4 5
6 7 2
如果我使用功能 B =排序的(a)
給出ANS
B =
1 4 2
6 7 5
但我想像
B =
5 1 4
2 6 7
平均2行應該進行排序,但IST行的元素應該保持不變,應該通訊員行第二。
我有陣列說 「一個」如何在MATLAB中對第二排排序二維數組?
一個=
1 4 5
6 7 2
如果我使用功能 B =排序的(a)
給出ANS
B =
1 4 2
6 7 5
但我想像
B =
5 1 4
2 6 7
平均2行應該進行排序,但IST行的元素應該保持不變,應該通訊員行第二。
您可以使用只在第二排的SORT功能,然後使用索引輸出到整個數組進行排序:
[junk,sortIndex] = sort(a(2,:));
b = a(:,sortIndex);
如何
a = [1 4 5; 6 7 2]
a =
1 4 5
6 7 2
>> [s,idx] = sort(a(2,:))
s =
2 6 7
idx =
3 1 2
>> b = a(:,idx)
b =
5 1 4
2 6 7
換句話說
,您使用第二個參數sort
以獲得您想要的排序順序,然後將其應用於整個事情。
調用sortRows(一 '2)'
拉此開:
a = 1 4 5
6 7 2
a' = 1 6
4 7
5 2
sortrows(a',2) = 5 2
1 6
4 7
sortrows(a',2)' = 5 1 4
2 6 7
這裏的關鍵是調用sortRows排序由指定行,所有的人遵循的順序。
垃圾可以被替換爲: [〜,sortIndex]這是在MATLAB – MatlabDoug 2010-08-18 14:48:13
的較新版本乾淨了一點遺憾的是,這是非常不向後兼容,並且可以可怕的尷尬,當你的用戶代碼誰使用稍微大一點Matlab版本。 – Jonas 2010-08-19 19:13:17