2014-10-18 3 views
0

Я написал программу, используя функцию набора уровней для распространения кривой. Кривая представлена ​​нулем уровня в контурном графике. Как я могу получить координаты этих кривых во время марша во времени?координаты из контура в matlab, где уровень равен нулю

Контур получается на каждом шагу. Как получить координаты на каждом шагу?

ответ

0

Контур нулевого уровня из набора точек 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; 
Смежные вопросы