Main Content

turningdist

计算 polyshape 对象之间的形变量

说明

td = turningdist(poly1,poly2) 返回具有兼容大小的两个 polyshape 数组的对应元素对组之间的形变量数组。两个 polyshape 对象之间的形变量用于衡量它们形状的相似程度(不考虑旋转和缩放)。形变量接近 0 表示二者几乎相同。值越大,两个形状差异越大。

TD(i,j) 是 poly1 中的第 i 个 polyshapepoly2 中的第 j 个 polyshape 之间的形变量。

示例

td = turningdist(polyvec) 返回 polyshape 对象向量的元素对组之间的形变量矩阵。

示例

全部折叠

创建并绘制具有不同大小和位置的两个正方形,表示为 polyshape 对象 poly1poly2

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

尽管这两个正方形大小不同,但其形状相同,因此二者之间的形变量为 0。

td = turningdist(poly1,poly2)
td = 0

创建并绘制第三个 polyshape,并比较其相对 poly1 的形变量。由于这两者的形状差异大于 poly1poly2 的形状差异,因此形变量更大。

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

td = turningdist(poly1,poly3)
td = 0.4443

输入参数

全部折叠

第一个输入 polyshape,指定为标量、向量、矩阵或多维数组。

第二个输入 polyshape,指定为标量、向量、矩阵或多维数组。

polyshape 向量。

输出参量

全部折叠

形变量,以元素大于或等于 0 的标量、向量、矩阵或多维数组形式返回。

  • 如果输入两个 polyshape 参量,则它们必须具有兼容的大小。例如,如果两个输入 polyshape 向量具有不同的长度 M 和 N,则它们必须有不同的方向(一个必须是行向量,一个必须是列向量)。td 则是 M×N 或 N×M,具体取决于每个输入向量的方向。有关兼容的数组大小的详细信息,请参阅基本运算的兼容数组大小

  • 如果您输入一个长度为 N 的 polyshape 向量,则 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 中推出

另请参阅