NCL Website header
NCL Home > Documentation > Functions > General applied math, Statistics

dim_rmvmed

Calculates and removes the median of the (rightmost) dimension at all other dimensions.

Prototype

	function dim_rmvmed (
		x  : numeric   
	)

	return_val [dimsizes(x)] :  float or double

Arguments

x

A variable of numeric type and any dimensionality.

Return value

The output is of type double if the input is double, and float otherwise.

The dimensionality is the same as the input dimensionality.

Description

The dim_rmvmed function calculates and removes the median from all elements of the n-1th (rightmost) dimension for each index of the dimensions 0...n-2. Missing values are ignored.

Use dim_rmvmed_n if you want to specify which dimension(s) to remove the median from.

Use the dim_rmvmed_Wrap function if metadata retention is desired. The interface is identical.

See Also

dim_rmvmed_n, dim_rmvmean, dim_rmvmean_Wrap, dim_rmvmed_Wrap, dim_rmvmean_n_Wrap, dim_rmvmed_n_Wrap

Examples

Example 1:

Let x be a 1-dimensional array: (a) Create a new variable, xNew, that contains just the deviations from the median; (b) replace the variable x with the deviations.

  xNew = dim_rmvmed(x)      ; new variable
  x    = dim_rmvmed(x)      ; overwrite with deviations

  ; Use dim_rmvmed_Wrap if metadata retention is desired
  ; xNew = dim_rmvmed_Wrap(x)      ; new variable
  ; x    = dim_rmvmed_Wrap(x)      ; overwrite with deviations
Example 2:

Let x be a 3-dimensional array with dimension sizes (ntim, nlat, nlon). To remove the medians of the "nlon" dimension:

   xRmvLon = dim_rmvmed (x)         ; new variable containing deviations (no metadata)
   x       = dim_rmvmed (x)         ; overwrite with deviations from median

   ; Use dim_rmvmed_Wrap if metadata retention is desired
   ; xRmvLon = dim_rmvmed_Wrap (x)         ; new variable containing deviations
   ; x       = dim_rmvmed_Wrap (x)         ; overwrite with deviations from median
Example 3:

Let x be a 3-dimensional array with named dimensions (time, lat, lon) and dimension sizes (ntim, nlat, nlon). To remove the median of the time dimension from all lat/lon indices, use NCL's named subscripting to reorder the input array such that "time" is the rightmost dimension.

   xRmvTime = dim_rmvmed(x(lat|:, lon|:, time|:))

   ; Use dim_rmvmed_Wrap if metadata retention is desired
   ; xRmvTime = dim_rmvmed_Wrap(x(lat|:, lon|:, time|:))
Important note: reordering arrays can be an expensive operation, especially if your variable is large or you are repeatedly reordering arrays in your script. Use the dim_rmsd_n or dim_rmsd_n_Wrap functions to avoid reordering:

   xRmvTime = dim_rmvmed_n(x,0)   ; no reordering needed

   ; Use dim_rmvmed_n_Wrap if metadata retention is desired
   ; xRmvTime = dim_rmvmed_n_Wrap(x,0)   ; no reordering needed
Example 4: Let x be as in Example 3 and let x contain monthly medians for (say) 10 years of data (ntim=120). Monthly anomalies for each month could be calculated using array subscripting and named subscripting to reorder the input array such that "time" is the rightmost dimension.

   xRmvJan  = dim_rmvmed(x(lat|:, lon|:, time|0:ntim-1:12))
   xRmvJuly = dim_rmvmed(x(lat|:, lon|:, time|6:ntim-1:12))

   ; Use dim_rmvmed_Wrap if metadata retention is desired
   ; xRmvJan  = dim_rmvmed_Wrap(x(lat|:, lon|:, time|0:ntim-1:12))
   ; xRmvJuly = dim_rmvmed_Wrap(x(lat|:, lon|:, time|6:ntim-1:12))
Use the dim_rmsd_n or dim_rmsd_n_Wrap functions to avoid reordering and retain metadata:


   xRmvJan  = dim_rmvmed_n(x(0:ntim-1:12,:,:),0)   ; no reordering needed
   xRmvJuly = dim_rmvmed_n(x(6:ntim-1:12,:,:),0)

   ; Use dim_rmvmed_n_Wrap if metadata retention is desired
   ; xRmvJan  = dim_rmvmed_n_Wrap(x(0:ntim-1:12,:,:),0)   ; no reordering needed
   ; xRmvJuly = dim_rmvmed_n_Wrap(x(6:ntim-1:12,:,:),0)