Main Content

turningdist

polyshape オブジェクト間のターニング距離を計算

説明

td = turningdist(poly1,poly2) は、互換性のあるサイズの 2 つの polyshape 配列における、対応する要素ペア間のターニング距離の配列を返します。2 つの polyshape オブジェクトの間のターニング距離は、回転やスケーリングとは無関係に、形状がどの程度一致しているかを測定した値です。ターニング距離が 0 に近いということは、ほぼ一致していることを意味します。値が大きいほど、2 つの形状の差異は大きくなります。

TD(i,j) は、poly1 の i 番目の polyshapepoly2 の j 番目の polyshape の間のターニング距離です。

td = turningdist(polyvec) は、polyshape オブジェクトのベクトルの要素ペア間にあるターニング距離の行列を返します。

すべて折りたたむ

サイズと位置が異なる 2 つの正方形を作成してプロットします。これらの正方形は polyshape オブジェクト poly1 および poly2 として表されます。

poly1 = nsidedpoly(4,'SideLength',1);
poly2 = nsidedpoly(4,'SideLength',3,'Center',[3 3]);
plot(poly1)
hold on 
plot(poly2)
axis equal
hold off

Figure contains an axes object. The axes object contains 2 objects of type polygon.

2 つの正方形はスケーリングが異なっていても形状は同じなので、ターニング距離は 0 です。

td = turningdist(poly1,poly2)
td = 0

3 番目の polyshape を作成してプロットし、poly1 とのターニング距離を比較します。poly1poly2 の場合より形状の差が大きいため、ターニング距離は大きくなります。

poly3 = nsidedpoly(20,'Center',[3 3]);
plot(poly1)
hold on
plot(poly3)
axis equal
hold off

Figure contains an axes object. The axes object contains 2 objects of type polygon.

td = turningdist(poly1,poly3)
td = 0.4443

入力引数

すべて折りたたむ

1 番目の入力 polyshape。スカラー、ベクトル、行列または多次元配列として指定します。

2 番目の入力 polyshape。スカラー、ベクトル、行列または多次元配列として指定します。

polyshape ベクトル。

出力引数

すべて折りたたむ

ターニング距離。各要素が 0 以上であるスカラー、ベクトル、行列、または多次元配列として返されます。

  • 2 つの polyshape 引数を入力する場合は、互換性のあるサイズでなければなりません。たとえば、2 つの入力 polyshape ベクトルの長さ M と N が異なる場合、方向はそれぞれ異なっていなければなりません (一方が行ベクトル、もう一方が列ベクトルでなければなりません)。td は、各入力ベクトルの方向に応じて、M 行 N 列または N 行 M 列となります。互換性のある配列サイズの詳細については、基本的な演算で互換性のある配列サイズを参照してください。

  • 長さが N である polyshape ベクトルを 1 つだけ入力した場合、td は N 行 N 列になります。

データ型: double

参照

[1] Arkin, E.M., Chew, L.P., Huttenlocher, D.P., Kedem, K., and Mitchell, J.S.B. "An efficiently computable metric for comparing polygonal shapes." IEEE Transactions on Pattern Analysis and Machine Intelligence. Vol. 13, Number 3, 1991, pp. 209-16. doi:10.1109/34.75509.

拡張機能

バージョン履歴

R2018a で導入

参考