MATLAB移民のためのJulia tips

MATLAB移民のためのJulia tips

何も考えずに速く計算できないのならば、何もやりたくない。

行列を行ごとにソートする

sortrowssortcolsは、廃止になりました。sortslicesを使います。以下参照。

julia.hatenablog.jp

MATLABsortrows(X, 2)

N-by-2行列 X の、2列目を評価して、行ごとに並べ替える。(昇順)

X = [5 3; 2 6; 4 2]
sortrows(X, by=x->x[2])

3x2 Array{Int64,2}:
4 2
5 3
2 6

  • xはダミー変数なので、お好きな文字を。
  • 降順にならべるときは、rev = trueをsortrowsのなかに追加する。

複数の条件でsortrowsする

2列目、3列目の順で評価するには、

X = [5 2 1; 2 6 1; 4 2 3]
sortrows(X, by=x->(x[2],x[3]))

3x3 Array{Int64,2}:
5 2 1
4 2 3
2 6 1

列ごとに異なる順序でsortrowsする

revを使わずに、-で降順を指定することもできる。 これを使うと、1列目は昇順、2列目は降順、3列目は昇順、というようなsortrowsができる:

X = [5 2 1; 2 6 1; 5 2 3; 5 3 0]
sortrows(X, by=x->(x[1],-x[2],x[3]))

4x3 Array{Int64,2}:
2 6 1
5 3 0
5 2 1
5 2 3