2016-01-21 23 views
1

我想繪製一個簡單的矢量場,但我不確定顫抖的語法,因爲它似乎沒有工作。它只是顯示一個空的情節。我認爲它與./有關,但是當我刪除這段時間時它甚至不會運行。由於new to matlab,試圖繪製一個使用箭頭的矢量場

v = -5:0.1:5; 
[x,y] = meshgrid(v); 
u1=(2./x); 
u2=(2.*y./(x.^2)); 
quiver(x,y,u1,u2); 
+1

你的代碼爲*語法*正確的。然而,你有很多數據點,首先你的箭頭很小,而對於'x = 0',你的矢量場無限大。這可能與箭頭的自動縮放混淆:嘗試'v = linspace(-5,5,10)'(主要點在偶數個點:這避免了'x = 0' /'y = 0 'lines。 –

+0

非常感謝你的工作,儘管我不確定爲什麼偶數個點可以避免x = 0線 – user1679198

+0

想想它:相反,如果你希望包含原點一個對稱域?然後你在'x = 0'處有一個點,然後有幾個點,也就是說'n',直到'xmax'。但是由於對稱性,你在負區域也會有'n'一直到'-xmax',與原點一起,你有'2 * n + 1',也就是奇數點。推論是,如果你使用偶數個點,你不能擊中原點。 –

回答

2

的問題是,你的矢量場是無限大的x=0,這與箭頭自動縮放食堂。嘗試避開座標軸,例如通過使用v=linspace(-5,5,10);。通過在對稱域上使用任意數量的點,可確保永不使用x=0y=0

結果使用此v

fixed

+1

@ user1679198:這應該是被接受的答案。 – jvriesem

+0

@jvriesem謝謝:)雖然我會注意到(1)OP在這裏看不到這個ping,(2)我的一個swer是社區維基,因爲這個問題很簡單,我不相信應該爲回答它而獲得代表(但我的回答感覺不僅僅是評論,而且我想包括這個數字)。所以接受將主要表明問題已經解決。 –