Next: segment, Previous: sccomplex, Up: Internal Routines [Contents][Index]

`sdev(`

`x` [, `mode`, weights=`weights`

, /sample,
/population, /keepdims, /double, /omitnans])

By default, this function returns the sample standard deviation of
numerical array

.
`x`

If

is a scalar or an array with a size different from
that of `mode`

, then it indicates the dimension(s) along which
standard deviations are calculated for each combination of the remaining
coordinates. In that case, if also `x``/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.

If

is an array with the same number of elements as
`mode`

, then each element of `x`

identifies the
(scalar) class to which each corresponding element of `mode`

belongs, and then a standard deviation is returned for each class. The
first element of the result refers to class `x``0`

(if no class is
negative), or to the most negative class.

If

is specified, then it must be a numerical array
with the same dimensions as `weights`

(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
`x`

are copied to a version with the same data type as
`weights`

for the internal calculations (except that the copy is
kept real even if `x`

is complex).
`x`

If `/population`

or

are specified, then
population standard deviations are returned. Otherwise, sample standard
deviations are returned.
`weights`

If `/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 `double`

if

is itself
`x``double`

or `cdouble`

, or if `/double`

was specified.
Otherwise, the result has type `float`

.

The last calculated standard deviation is stored in `!lastsdev`

,
and the associated average (or the real part of it, for complex
arguments) in `!lastmean`

(except if the standard deviations were
determined by class).

Examples, with `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 `x`

:

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
identified by `c`

:

LUX>t,sdev(x,c) 0 1.414214 2.217356

Class 0 yields `0`

because there are no elements `0`

in
`c`

. Class 1 yields the population standard deviation
(`1.414214`

) of elements `2, 4`

, and class 2 yield the
deviation (`2.217356`

) of elements `6, 4, 3, 8`

.

See also: hist, mean, total, variance, !lastmean, !lastsdev

Next: segment, Previous: sccomplex, Up: Internal Routines [Contents][Index]