主要内容

本页采用了机器翻译。点击此处可查看英文原文。

polysplit

将线段或多边形部分从向量形式转换为元胞数组

语法

[latcells,loncells] = polysplit(lat,lon)

说明

[latcells,loncells] = polysplit(lat,lon) 将向量 latlon 中以 NaN 为分隔符的线段,作为 N 行 1 列的元胞数组返回,每个单元包含一条多边形线段。latlon 必须具有相同的大小,且 NaN 的位置必须完全一致。如果 latlon 是列向量,则多边形线段为列向量;否则为行向量。

示例

全部折叠

创建两个以 NaN 为分隔符的数组,形式为列向量。

lat = [45.6 -23.47 78 NaN 43.9 -67.14 90 -89]';
lon = [13 -97.45 165 NaN 0 -114.2 -18 0]';

使用 polysplit,在 NaN 分隔符处将列向量拆分为单独的线段元胞数组。

[latc,lonc] = polysplit(lat,lon)
latc=2×1 cell array
    {3×1 double}
    {4×1 double}

lonc=2×1 cell array
    {3×1 double}
    {4×1 double}

检查元胞数组的内容。请注意,元胞数组中的每个元素都包含原始线条的一段。

[latc{1} lonc{1}]
ans = 3×2

   45.6000   13.0000
  -23.4700  -97.4500
   78.0000  165.0000

[latc{2} lonc{2}]
ans = 4×2

   43.9000         0
  -67.1400 -114.2000
   90.0000  -18.0000
  -89.0000         0

您可以使用 polyjoin 函数来逆转该过程。

[lat2,lon2] = polyjoin(latc,lonc);

比较原始线段和合并后的线段。根据定义,对于 NaN 分隔符,该逻辑比较结果为假。

[lat lon] == [lat2 lon2]
ans = 8×2 logical array

   1   1
   1   1
   1   1
   0   0
   1   1
   1   1
   1   1
   1   1

测试全局相等性,包括 NaN 值。

isequaln(lat,lat2) & isequaln(lon,lon2)
ans = logical
   1

版本历史记录

在 R2006a 之前推出