MATLAB Answers


How do I use Quiver with X, Y, radians and vector length?

Asked by Right Grievous on 21 May 2015
Latest activity Commented on by Chad Greene
on 22 May 2015
Hi everybody,
I would really like to use a quiver plot to display my data, however, I can't seem to get it to work properly, the plot never looks like it should and any changes I make just seem to result in random results.
I have two matrices, one contains heading direction in radians, the other contains the strength of this heading/vector length or intensity.
So from these I have X, Y, direction (in radians) and something that could be considered analogous to velocity (actually Rayleigh vector lengths).
I know I should be able to plot this data using Quiver but I don't seem to understand how the inputs work. I have looked over the help and doc information but they keep using examples generated from sin or cos applied to a matrix, which really doesn't help me understand the inputs any better.
Any help would be massively appreciated.
Sample Data:
if true
[X,Y] = meshgrid(1:1:10);
heading = deg2rad(randi([-180 180],10,10));
r = randi([0 10],10,10);


Sign in to comment.

1 Answer

Answer by Chad Greene
on 21 May 2015
 Accepted Answer

If you have the locations of points X and Y, all you have to do is convert your direction/magnitude information to cartesian coordinates. For direction theta and magnitude rho,
[u,v] = pol2cart(theta,rho);
should do the trick.


Absolutely fantastic - this is the step I was missing.
Another tip for anyone reading this, I wanted to compare my quiver plot to a plot produced by imagesc - imagesc automatically flips imaged matrices (because 0,0 is top left I think instead of bottom right) but you can use "set(gca,'YDir','normal')" to correct this and then they should both line up.
Thanks a bunch!
Alternatively, you can use axis xy to flip the y direction back from imagesc's default axis ij.

Sign in to comment.