sdev(x [, mode, weights=
/population, /keepdims, /double, /omitnans])
By default, this function returns the sample standard deviation of
mode is a scalar or an array with a size different from
x, then it indicates the dimension(s) along which
standard deviations are calculated for each combination of the remaining
coordinates. In that case, if also
/keepdims is specified, then
the dimension(s) along which the deviations are calculated are set to 1
in the result. If
/keepdims is not set, then such dimensions are
omitted from the result, and if only a single number is returned, then
it is returned as a scalar.
mode is an array with the same number of elements as
x, then each element of
mode identifies the
(scalar) class to which each corresponding element of
belongs, and then a standard deviation is returned for each class. The
first element of the result refers to class
0 (if no class is
negative), or to the most negative class.
weights is specified, then it must be a numerical array
with the same dimensions as
x (or merely the same number of
elements, if deviations are calculated by class), and then each of its
elements indicates the weight of the corresponding element of
x, and then weighted standard deviations are returned. The
weights are copied to a version with the same data type as
x for the internal calculations (except that the copy is
kept real even if
x is complex).
weights are specified, then
population standard deviations are returned. Otherwise, sample standard
deviations are returned.
/omitnans is specified, then data elements and weights that
are equal to NaN are omitted from the calculations.
Complex numbers are supported.
The result has type
x is itself
cdouble, or if
/double was specified.
Otherwise, the result has type
The last calculated standard deviation is stored in
and the associated average (or the real part of it, for complex
!lastmean (except if the standard deviations were
determined by class).
x = [[[6, 4, 3]],[[8, 2, 4]]] and
c = [2, 2,
2, 2, 1, 1]:
To print the population standard deviation along the first dimension
(dimension 0, rows) of
LUX>t,sdev(x,0,/population) 1.247219 2.494438
And along the second dimension (dimension 1, columns):
LUX>t,sdev(x,1,/population) 1 1 0.5
To divide each column of
x by its sample standard deviation:
LUX>x /= sdev(x,1,/keepdims) LUX>t,x(*,0) 4.242641 2.828427 4.242641 LUX>t,x(*,1) 5.656854 1.414214 5.656854
To print the population standard deviation of
x for the classes
LUX>t,sdev(x,c) 0 1.414214 2.217356
Class 0 yields
0 because there are no elements
c. Class 1 yields the population standard deviation
1.414214) of elements
2, 4, and class 2 yield the
2.217356) of elements
6, 4, 3, 8.
See also: hist, mean, total, variance, !lastmean, !lastsdev