如果我有:方向的矢量的
a=magic(9);
如何計算在a
任意兩點之間的方向和矢量的幅度?例如,如果我定義了vec = [a(1,1) a(2,2)]
,矢量的方向是否定義爲:vecdir = a(1,1) - a(2,2)
?
如果我有:方向的矢量的
a=magic(9);
如何計算在a
任意兩點之間的方向和矢量的幅度?例如,如果我定義了vec = [a(1,1) a(2,2)]
,矢量的方向是否定義爲:vecdir = a(1,1) - a(2,2)
?
vec = [x y]
dist = sqrt(sum(vec.^2)) % i.e. sqrt(x^2 + y^2)
dir = atan(y/x) % i.e. atan(vec(2)/vec(1))
謝謝,這就是我一直在尋找的 – brucezepplin 2012-08-01 12:06:16
計算方向正確的方法是使用atan2()
代替atan()
,因爲atan()
無法解析象限,並給出在第二和第三象限錯角(即,當x爲負)。作爲一個例子,
x = -1;
y = -1;
dir = atan(y/x); % returns 0.78540 rad = 45 deg
這顯然是錯誤的方向。然而,atan2()
產生
dir2 = atan2(y, x); % returns -2.3562 rad = -135 deg.
如果你堅持要用atan()
,你必須檢查的X參數的符號,並添加pi
每當它是負的。
但(1,1)和(2,2)是標量,那麼它們之間怎麼會有方向?你的意思是讓X分量爲(1,1)而Y分量爲(2,2)所產生的向量? – Dan 2012-08-01 10:02:36
我如何創建你提到的這種矢量? – brucezepplin 2012-08-01 10:24:43
如你所說,在這種情況下vec = [a(1,1)a(2,2)] – 2012-08-01 10:36:34