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.
Nicholas Howe (2020). 2D Vector Field Visualization (https://www.mathworks.com/matlabcentral/fileexchange/29487-2d-vector-field-visualization), MATLAB Central File Exchange. Retrieved .
cquiver works fine.
Subscript indices must either be real positive
integers or logicals.
Error in vfcolor (line 64)
img1(:) = c(h1,1,:);
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.
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 :)
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.
Inspired by: ncquiverref