Этот пример показывает, как идентифицировать строку или сегменты закрашенной фигуры, если они были объединены в большой NaN
- отсеченные векторы. Можно разделить их полигон или векторы строки в их сегменты компонента с помощью функции polysplit
, которая берет вектор-столбцы в качестве входных параметров. Чтобы объединиться отдельный полигон или векторы строки используют polyjoin
.
Создайте два 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]';
Разделите вектор-столбцы в отдельные массивы ячеек линейного сегмента в разделителях NaN
с помощью polysplit
.
[latc,lonc] = polysplit(lat,lon)
latc = 2x1 cell array
{3x1 double}
{4x1 double}
lonc = 2x1 cell array
{3x1 double}
{4x1 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);
Выполните логическое сравнение сегментов, к которым соединяют. Обратите внимание на то, что они идентичны с начальным lat
и массивами lon
. Логическое сравнение является ложным для разделителей NaN
по определению.
[lat lon] == [lat2 lon2]
ans = 8x2 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