2016-09-14 138 views
2

使用quiver,streamslice或類似的方法在MATLAB中繪製流線時,是否可以在給定輪廓線上提取輪廓線?從MATLAB中的流線提取輪廓線的軌跡

就拿這個例子(我有我的情況下的數值數據,但我會用在例如分析功能):

[X,Y] = meshgrid(0:.02:1); 
Z = X.*exp(-X.^2 - Y.^2); 
[DX,DY] = gradient(Z,.2,.2); 

figure 
imagesc([0 1], [0 1], Z) 
hold on 
streamslice(X,Y,DX,DY) %how to extract a trajectory at a given contour level C? 
hold off 
colorbar 

如果沒有,是否有可能以其他方式獲得?我想以這種方式使用contour的,

contour(X,Y,sqrt(DX.*DX+DY.*DY), [1 1]*0.07) 

但這顯然是錯誤的,當我比較上面的流線。

回答

1

hs = streamslice(X,Y,DX,DY);因爲你得到一個帶有處理線的矢量。例如,你可以得到第一traject線的座標:

N_trajects = length(hs); % the number of all trajectories 
n = 1; % the chosen trajectory 
X_traject = get(hs(n),'XData'); 
Y_traject = get(hs(n),'YData'); 

或使用MATLAB的新版本:

X_traject = hs(n).XData; 
Y_traject = hs(n).YData; 

要提取countour行數據:

C = contour(X,Y,sqrt(DX.*DX+DY.*DY), [1 1]*0.07); 

其中C將數據與等高線結合起來。在你的情況下只有一條輪廓線(X_contour = C(1,:)Y_contour = C(2,:))。在很多等值線的情況下,要提取它們,請參見herehere或使用this

現在我們知道軌跡和輪廓水平的座標。因此您可以找到軌跡和輪廓線之間的交點。

+0

謝謝,這很有幫助。但是,是否有可能找到特定輪廓水平的軌跡? – BillyJean

+0

現在與您的問題有關嗎? –

+0

是的,謝謝亞歷山大 – BillyJean