File Exchange

image thumbnail

2D Vector Field Visualization

version 1.0 (3.15 KB) by

Two functions that create visualizations of 2D vector fields



View License

The files in this package comprise two Matlab functions that create
visualizations of 2D vector fields.

cquiver renders a vector field as a grid of unit-length arrows. The arrow direction indicates vector field direction, and the color indicates the magnitude. Color is taken from the current colormap.

vfcolor renders a vector field as a grid of colors. Hue indicates the field direction, and saturation indicates the magnitude. The current implementation uses a fixed color coding.

Comments and Ratings (6)


Eric (view profile)

cquiver works fine.

vfcolor fails.

Subscript indices must either be real positive
integers or logicals.

Error in vfcolor (line 64)
img1(:) = c(h1,1,:);

Nicholas Howe

Nicholas Howe (view profile)

As implemented, cquiver and vfcolor can only display a rectangular grid of vectors. Thus the quiver functionality you are looking for is not available. Sorry! I'll consider whether it can be added in a future version.


Dear Nicholas,
I have a problem with using cquiver and vfcolor. I have a map of vectors that I normally display with quiver by giving it as an imput the x and y position of each vector and the x and y components (say quiver(xcoord, ycoord, xcomp, comp)). Rather then the standard quiver plot, I wish to colorcode this map of vectors. What should I give as an input to vfcolor or cquiver?


it works, thank you :)

Nicholas Howe

Nicholas Howe (view profile)

I guess it's confusing that the usage for cquiver is slightly different from quiver. Sorry about that!

If I understand your example properly, `of` represents the optical flow you wish to display as a 2D array of complex numbers. In that case you should be able to call cquiver like this:



can you give me an working example of the cquiver() function? i don't know how to handle the input arguments.

formally I used Matlabs quiver() function like this:

%read a single frame of a Video file
im = step(hVideoSrc);

%create a rectangular grid

[X Y] = meshgrid(1:1:size(im, 2), 1:1:size(im, 1));

% compute optical flow for the video
%Horizontal and vertical components in %complex form

of = step(hof,im);

%plot a 2-d vector Field


This returns a Quiver Plot of the Optical flow between two frames of the Video.
But when I replace the quiver() function With the cquiver function it just returns me the Colorbar, and nothing else.


MATLAB Release
MATLAB 7.10 (R2010a)

Inspired by: ncquiverref

Download apps, toolboxes, and other File Exchange content using Add-On Explorer in MATLAB.

» Watch video