vxvy2uv documentation
vxvy2uv is part of Antarctic Mapping Tools for Matlab (Greene et al., 2017). Click here for a complete list of functions in AMT.
This function transforms polar stereographic vector components to georeferenced (zonal and meridional) vector components.
Contents
Syntax
[U,V] = vxvy2uv(lat,lon,vx,vy) [U,V] = vxvy2uv(x,y,vx,vy)
Description
[U,V] = vxvy2uv(lat,lon,vx,vy) transforms polar stereographic vector components vx, vy referenced to the geographic locations in lat and lon to geographic zonal and meridional components.
[U,V] = vxvy2uv(x,y,vx,vy) transforms polar stereographic vector components vx, vy referenced to the polar stereographic locations in x and y to geographic zonal and meridional components. Polar stereographic coordinates are automatically determined if any value in the first two inputs of vxvy2uv exceed normal geographic coordinate values.
Example 1: Continental scale motion
Consider a vector field depicting motion from left to right on a standard polar stereographic map projection. Make its x component 1.5 magnitude everywhere, and we'll add a slight downward-dipping y component too, just to make things interesting. To set up the grid, us psgrid to create a 6000 km wide grid at 250 km resolution, centered on the South Pole:
[x,y] = psgrid('south pole',6000,250,'xy'); vx = 1.5*ones(size(x)); vy = -0.3*ones(size(x));
In cartesian coordinates this is what the vector field looks like. We'll overlay a Bedmap2 grounding line for context:
quiver(x,y,vx,vy) hold on bedmap2('gl','xy')

close
We can convert this vector field to zonal and meridional components like this:
[u,v] = vxvy2uv(x,y,vx,vy);
Let's show the zonal and meridional components on a map. We'll have to use ps2ll to get the georeferenced coordinates of our xy grid first. Initialize a map with antmap, plot a filled coast line as a patch object for context, and plot the vector field with the AMT function quivermc:
[lat,lon] = ps2ll(x,y);
antmap
bedmap2 'patchcoast'
quivermc(lat,lon,u,v)

That looks about right. There's one funny vector close to the South Pole because that's where small errors in angles go haywire.
close
Example 2: Glacier motion
Let's use the MEaSUREs toolbox to look at ice motion around Recovery Glacier. Start by defining a 500 km wide grid centered on Recovery Glacier. Make the grid 3 km resolution.
[lat,lon] = psgrid('recovery glacier',500,3);
The measures_interp function can return ice velocity components for at each of our lat,lon grid points:
vx = measures_interp('vx',lat,lon); vy = measures_interp('vy',lat,lon);
In cartesian coordinates, the vector field looks like this:
[x,y] = ll2ps(lat,lon); quiver(x,y,vx,vy)

That's a bit hard to parse using Matlab's quiver function, but if you zoom in the arrows are there. For example,
axis([-640322 -553225 758771 839473])

close
You might want zonal and meridional components of ice motion. Let's do that and show vectors atop a ramp image. When calling quivermc below I'm color-scaling the arrows using one of my favorite colormap generators, brewermap, and I don't want to show too many little arrows, so I'll downsample the field to 20% with the 'density',20 option:
[u,v] = vxvy2uv(lat,lon,vx,vy); mapzoom('recovery glacier') ramp quivermc(lat,lon,u,v,'colormap',brewermap(256,'reds'),'density',20)

Citing AMT
If this function or any other part of Antarctic Mapping Tools is useful for you, please cite the paper that describes AMT.
Greene, C. A., Gwyther, D. E., & Blankenship, D. D. Antarctic Mapping Tools for Matlab. Computers & Geosciences. 104 (2017) pp.151-157. doi:10.1016/j.cageo.2016.08.003.
Author Info
The vxvy2uv function and supporting documentation were written by Chad A. Greene of the University of Texas at Austin's Institute for Geophysics (UTIG), September 2015.