
local_min
Determines the relative minima for a 2-dimensional array.
Prototype
function local_min ( x [*][*] : float or double, cyclic : logical, delta : numeric ) return_val [1] : integer
Arguments
xA 2-dimensional float or double array. Missing data are allowed and must be indicated by x@_FillValue.
cyclic
Set to False if the data array is not cyclic in x.
Set to True if data are cyclic in the x-axis direction. In this case, the x array should not include the cyclic point.
deltaTolerance level. If values are within delta of surrounding values it will not be counted as a local min value. Generally, delta=0.0
Return value
Returns the number of relative min values found (nmin). If nmin is greater than zero, then nmin will have three 1-dimensional attribute arrays associated with it:
- nmin@xi - this will contain the x-axis indices (e.g. longitudes)
- nmin@yi - this will contain the y-axis indices (e.g. latitudes)
- nmin@minval - this will contain the minimum values
If x is of type float, the return value is float. If x is of type double, the return value is of type double.
Description
This function uses a simple algorithm. It looks at the points surrounding x and checks to see if they are less than the central value. The central value is x - delta.
1-----------8-----------7 | | | | | | | | | 2-----------0-----------6 | | | | | | | | | 3-----------4-----------5
See Also
local_max, local_min_1d, local_max_1d
Examples
Example 1
Example 2
Let x be a 2-dimensional array with dimension sizes nlat = 64 and mlon = 128 with coordinate variables "lat" and "lon". The data are cyclic (cyclic=True). Do not use any tolerance [delta = 0.0]
nmin = local_min(x, True, 0.0)If nmin = 3, then the attribute vectors might look like:
nmin@xi = (/ 3, 57, 90 /) nmin@yi = (/ 21, 38, 52 /) nmin@minval = (/ 35.0, -14.3, -23.9 /)If it is desired to write this to, say, an ascii file, then:
ncol = 3 data = new ( (/nmin,ncol/) , typeof(x) ) data(:,0) = nmin@xi data(:,1) = nmin@yi data(:,2) = nmin@minval opt = True opt@fout = "sample.txt" write_matrix( data, ncol + "f10.2", opt)The output file ["sample.txt"] would look like:
3.00 21.00 35.00 57.00 38.00 -14.30 90.00 52.00 -23.90