0
我已經寫了使用水平集函數的曲線傳播的程序。曲線由等值線圖中的零級表示。我如何隨着時間的推移獲得這些曲線的座標?從輪廓座標在MATLAB其中level是零
輪廓在每個時間步長獲得。如何獲得每一步的座標?
我已經寫了使用水平集函數的曲線傳播的程序。曲線由等值線圖中的零級表示。我如何隨着時間的推移獲得這些曲線的座標?從輪廓座標在MATLAB其中level是零
輪廓在每個時間步長獲得。如何獲得每一步的座標?
從一組點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;