2013-06-05 84 views
1

我有三個容器和這些船隻的方向由V1V2V3給出:比較兩個矢量方向MATLAB

V1 = [0.7030 -0.7112] 
V2 = [0.5099 -0.8602] 
V3 = [-0.6799 -0.7333] 

這裏是他們的圖形可視化:

vectors

如何我可以找到V3是否「正在接近」V2(如圖所示)或「離開」V2?我想檢查3號容器是#1號容器還是#2號容器的一部分,,如果容器#3從容器#1分支出來,則V3V1「向」V2(如圖所示)在這種情況下,#3號船是#1號船的一部分。

我該如何在MATLAB中做到這一點?

+2

這是一個數學問題,而不是編程問題。您可能會在[math.stackexchange.com](http://math.stackexchange.com ...)上得到更好的答案。 –

+1

請注意,矢量通常只有方向,而不是位置。所以你可能想對「接近」這樣的東西給出一個更好的定義。 –

+0

另外,你的數據代表什麼?這些座標是?如果是這樣,你需要兩點來明確定義矢量(及其方向)。 –

回答

0

下面是一個方法,如果V1「方法」 V2

計算之間的最小距離的V1第一座標和線段V2。 對第二個座標V1做同樣的操作。

如果第一個座標值比第二另外,考慮V2是接近V1

2

所有你需要做的是採取兩個方向矢量s = V1.'*V3;

現在的點產品,如果答案是肯定的那麼兩個矢量會聚(指向相同的方向)。

如果答案是否定的兩個矢量發散(指向彼此遠離)

當兩個兩個向量垂直的點積是零,而當它們平行是等於1

爲什麼?

因爲點積表示兩個向量之間角度的餘弦。

a · b = |a| |b| cos(θ) 

當角度大於π/ 2時,餘弦爲負值,且矢量指向彼此「離開」。

+0

(V1,V3)和(V1,V2)之間的點積是:C1 =點(V1,V3) C1 = 0.0436和 >> C2 =點(V2,V3) C2 = 0.2841,但是當s = V1時,兩者都是正值。'* V3;給出矩陣,即s = [-0.4780 -0.5155 0.4835 0.5215]但不是標量。你能否詳細說明你的答案,你是如何預測s = V1的矢量的收斂和散度的。 – Dev

+0

也許你不僅需要方向,而且需要位置來確定它們的線相交的位置。如果是這樣,請澄清這個問題,或者在他們接近和不接近的例子中提供更多細節。 – ja72