Previous: diff 期間 Up: mcal Next: distgps GPS距離 MCMD2
MCMD2 : mcal : dist 距離

4.34 dist 距離

書式: dist(タイプ,$num_1,num_2,\cdots ,n_ k,num_{k+1},num_{k+2},\cdots ,num_{2k}$)

2つのk次元ベクトル($num_1,num_2,\cdots ,n_ k),(num_{k+1},num_{k+2},\cdots ,num_{2k}$)の距離を計算する。 距離としては以下のものが利用できる。 詳細な定義はmsimを参照のこと。

  • euclid: ユークリッド距離

  • cityblock: 都市ブロック距離

  • hamming: ハミング距離

ハミング距離については、値は文字型として指定しなければならない(以下の例を参考のこと)。

利用例

例1: ユークリッド距離

$ more dat1.csv
id,x1,y1,x2,y2
1,0,0,1,1
2,0,1,2,0
3,,,,
$ mcal c='dist("euclid",${x1},${y1},${x2},${y2})' a=rsl i=dat1.csv o=rsl1.csv
#END# kgcal a=rsl c=dist("euclid",${x1},${y1},${x2},${y2}) i=dat1.csv o=rsl1.csv
$ more rsl1.csv
id,x1,y1,x2,y2,rsl
1,0,0,1,1,1.414213562
2,0,1,2,0,2.236067977
3,,,,,

例2: 都市ブロック距離

$ mcal c='dist("cityblock",${x1},${y1},${x2},${y2})' a=rsl i=dat1.csv o=rsl2.csv
#END# kgcal a=rsl c=dist("cityblock",${x1},${y1},${x2},${y2}) i=dat1.csv o=rsl2.csv
$ more rsl2.csv
id,x1,y1,x2,y2,rsl
1,0,0,1,1,2
2,0,1,2,0,3
3,,,,,

例3: ハミング距離

ハミング距離の計算では、値を文字列として指定していることに注意する。

$ more dat2.csv
id,x1,y1,x2,y2
1,a,b,a,c
2,0,1,0,1
3,,,,
$ mcal c='dist("hamming",$s{x1},$s{y1},$s{x2},$s{y2})' a=rsl i=dat2.csv o=rsl3.csv
#END# kgcal a=rsl c=dist("hamming",$s{x1},$s{y1},$s{x2},$s{y2}) i=dat2.csv o=rsl3.csv
$ more rsl3.csv
id,x1,y1,x2,y2,rsl
1,a,b,a,c,1
2,0,1,0,1,2
3,,,,,
Previous: diff 期間 Up: mcal Next: distgps GPS距離 MCMD2