Контур нулевого уровня из набора точек z (x, y) можно получить с помощью contourc
. Например, для peaks
-example в MATLAB, мы получим контурные линии с высоты 0 следующим образом:
c = contourc(peaks, [0,0]);
Если этот контур является одной линии, это все, что вам нужно сделать. Однако контур может состоять из нескольких островков (что имеет место для этого примера), что означает, что вам нужно как-то разбить набор координат (x, y) в c
. Разделенная на основе значений NaN могут быть получены с помощью:
c(:,~c(1,:)) = NaN;
и результат может быть заговором
plot(c(1,:),c(2,:),'k');
Если этого недостаточно, можно также построить массив ячеек c_split
островов:
b = find(~c(1,:))+1;
e = b+c(2,b-1)-1;
c_split = arrayfun(@(idx) c(:,b(idx):e(idx)), 1:numel(b), 'uni', 0)';
и визуализация очень похожи:
idx = 1;
plot(c_split{idx}(1,:),c_split{idx}(2,:),'k');
Если контуры должны храниться в течение нескольких временных шагов, вы объедините все результаты в клетку:
c_all{idx} = c;