# drawing a quiver for a list of 1D arrows

20 views (last 30 days)
Sahar Amir on 20 Apr 2016
Commented: Ced on 20 Apr 2016
Assuming we have a set of points x and y positions. Something like: x = [1.25 1.4 1.45 1.6] y = [6 6.15 6.2 6.35] and the velocity values at them in 1D direction: vel = [-0.0145 -0.0231 -0.0134] How can we show the quiver arrows in 2D plane according to their positions and directions in this 1D line ?? Something like 3 arrows in the plane in this case for example ??

Ced on 20 Apr 2016
Hi
What do you mean by "velocity values in 1D direction"? Your velocity has 3 components. Regardless, you can plot any of these things using quiver, or quiver3. Example:
x = [1.25 1.4 1.45 1.6]';
y = [6 6.15 6.2 6.35]';
z = [ 0 0 0 0 ]';
vel = [-0.0145 -0.0231 -0.0134];
N = length(x);
vel_mat = repmat(vel,N,1);
% draw 3D quiver plot
quiver3(x,y,z,vel_mat(:,1),vel_mat(:,2),vel_mat(:,3))
xlabel('x')
ylabel('y')
zlabel('z')
% select view (here, x-y)
view(0,90)
returns Sahar Amir on 20 Apr 2016
You are right we can define it as you said or using the quiver to look like what you showed ... However, it is different than what I want. I mean that we have a line defined by the x y positions we defined above. Now we want to draw the velocity lines within this line (inside of it). So, they are supposed to look like a line of arrows within this line and each arrow size differes according to the velocity at that point. All of this will be combined within a bigger figure but for now lets focus on this part.
Ced on 20 Apr 2016
You would do that exactly like above, you just have to set your velocity accordingly. Let's say you have a speed s1 at point (x(1),y(1)) towards (x(2),y(2)), then
dx = diff(x);
dy = diff(y);
vel = s1*[ dx(1) ; dy(1) ; 0 ]/sqrt(dx(1).^2 + dy(1).^2);
?