a MATLAB function for obtaining coordinate range of a selected rectangle in figure
Warning! Do not use this function upon your final prepared/optimized figure, because it will manipulate Axes Aspect Ratio.
[Xrange,Yrange]=rectrange(xgrid,ygrid,f) lets you select a rectangle in the current figure using the mouse. The figure has to be generated based on a rectangle grid (X, Y) which is usually produced by using function MESHGRID. Then the coordinate ranges of the selected rectangle (Not its position.Thus, its different from function GETRECT) based on grid (xgrid,ygrid) will be derived.This would be useful when you have a map generated based on grids of longitudes latitudes and want to know longitude/latitude range of a certain region. However, this function won't work when the map is produced by using M_Map toolbox due to projection issues.
xgrid,ygrid - The rectangle grid on which the figure bases. Usually, they
are generated by [xgrid,ygrid]=meshgrid(xgv,ygv). See
meshgrid.m.
f - The handle of the figure. For exmaple, f = figure;
'precise' - Default output mode. The precise coordinate ranges will be
obtained no matter there are intervals between grid points.
'nearest' - Other than 'presice', the coordinate ranges of your
selected rectangle in x- and y-direction will be derived
from 4 grid points close to each vertex of the rectangle.
Xrange - The range of selected rectangle in x-direction.
Yrange - The range of selected rectangle in y-direction.
For example,
[X,Y,Z] = peaks;
f=figure;
contourf(X,Y,Z,'linestyle','none');
axis equal
[rx,ry]=rectrange(X,Y,f);One can test this function by uncommenting lines 106, 107, 125-128, 133-134 and 145. The rectangle you selected and its two vertices will be drawn in your figure.
2018/07/29