2016-01-21 90 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是社区维基,因为这个问题很简单,我不相信应该为回答它而获得代表(但我的回答感觉不仅仅是评论,而且我想包括这个数字)。所以接受将主要表明问题已经解决。 –