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

dim_rmvmean

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

Prototype

function dim_rmvmean (
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_rmvmean function calculates and removes the mean from all elements of the n-1th (rightmost) dimension for each index of the dimensions 0...n-2. Missing values are ignored.

Use dim_rmvmean_n if you want to specify which dimension(s) to remove the mean from.

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

Examples

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

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

; Use dim_rmvmean_Wrap if metadata retention is desired
; xNew = dim_rmvmean_Wrap(x)      ; new variable
; x    = dim_rmvmean_Wrap(x)      ; overwrite with deviations
Example 2: Let x be a 3-dimensional array with dimension sizes (ntim, nlat, nlon). To remove the means of the "nlon" dimension:

xRmvLon = dim_rmvmean (x)         ; new variable containing deviations (no metadata)
x       = dim_rmvmean (x)         ; overwrite with deviations

; Use dim_rmvmean_Wrap if metadata retention is desired
; xRmvLon = dim_rmvmean_Wrap (x)         ; new variable containing deviations
; x       = dim_rmvmean_Wrap (x)         ; overwrite with deviations
Example 3: Let x be a 3-dimensional array with named dimensions (time, lat, lon) and dimension sizes (ntim, nlat, nlon). To remove the mean 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_rmvmean(x(lat|:, lon|:, time|:))

; Use dim_rmvmean_Wrap if metadata retention is desired
; xRmvTime = dim_rmvmean_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_rmvmean_n(x,0)      ; no reordering needed

; Use dim_rmvmean_n_Wrap if metadata retention is desired
; xRmvTime = dim_rmvmean_n_Wrap(x,0)
Example 4: Let x be as in Example 3 and let x contain monthly means 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_rmvmean(x(lat|:, lon|:, time|0:ntim-1:12))
xRmvJuly = dim_rmvmean(x(lat|:, lon|:, time|6:ntim-1:12))

; Use dim_rmvmean_Wrap if metadata retention is desired
; xRmvJan  = dim_rmvmean_Wrap(x(lat|:, lon|:, time|0:ntim-1:12))
; xRmvJuly = dim_rmvmean_Wrap(x(lat|:, lon|:, time|6:ntim-1:12))

The following code does not require reordering:

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

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