# Documentation

### This is machine translation

Translated by
Mouseover text to see original. Click the button below to return to the English verison of the page.

# movstd

Moving standard deviation

## Syntax

``M = movstd(A,k)``
``M = movstd(A,[kb kf])``
``M = movstd(___,w)``
``M = movstd(___,w,dim)``
``M = movstd(___,nanflag)``
``M = movstd(___,Name,Value)``

## Description

example

````M = movstd(A,k)` returns an array of local `k`-point standard deviation values. Each standard deviation is calculated over a sliding window of length `k` across neighboring elements of `A`. When `k` is odd, the window is centered about the element in the current position. When `k` is even, the window is centered about the current and previous elements. The window size is automatically truncated at the endpoints when there are not enough elements to fill the window. When the window is truncated, the standard deviation is taken over only the elements that fill the window. `M` is the same size as `A`.If `A` is a vector, then `movstd` operates along the length of the vector.If `A` is a multidimensional array, then `movstd` operates along the first array dimension whose size does not equal 1.```

example

````M = movstd(A,[kb kf])` computes the standard deviation with a window of length `kb+kf+1`. The calculation includes the element in the current position, `kb` elements backward, and `kf` elements forward.```

example

````M = movstd(___,w)` specifies a normalization factor for any of the previous syntaxes. When ```w = 0``` (default), `M` is normalized by `k-1` for window length `k`. When `w = 1`, `M` is normalized by `k`.```

example

````M = movstd(___,w,dim)` returns the array of sliding standard deviations along dimension `dim` for any of the previous syntaxes. Always specify the weight `w` from the previous syntax when specifying `dim`. For example, `movstd(A,k,0,2)` operates along the columns of a matrix `A`, computing the `k`-element sliding standard deviation for each row. The normalization factor is the default, `k-1`.```

example

````M = movstd(___,nanflag)` specifies whether to include or omit `NaN` values from the calculation for any of the previous syntaxes. `movstd(A,k,'includenan')` includes all `NaN` values in the calculation while `movstd(A,k,'omitnan')` ignores them and computes the standard deviation over fewer points.```

example

````M = movstd(___,Name,Value)` specifies additional parameters for the standard deviation using one or more name-value pair arguments. For example, if `x` is a time vector, then `movstd(A,k,'SamplePoints',x)` computes the moving standard deviation relative to the times in `x`.```

## Examples

collapse all

Compute the three-point centered moving standard deviation of a row vector. When there are fewer than three elements in the window at the endpoints, take the standard deviation over the elements that are available.

```A = [4 8 6 -1 -2 -3 -1 3 4 5]; M = movstd(A,3)```
```M = Columns 1 through 7 2.8284 2.0000 4.7258 4.3589 1.0000 1.0000 3.0551 Columns 8 through 10 2.6458 1.0000 0.7071 ```

Compute the three-point trailing moving standard deviation of a row vector. When there are fewer than three elements in the window at the endpoints, take the standard deviation over the elements that are available.

```A = [4 8 6 -1 -2 -3 -1 3 4 5]; M = movstd(A,[2 0])```
```M = Columns 1 through 7 0 2.8284 2.0000 4.7258 4.3589 1.0000 1.0000 Columns 8 through 10 3.0551 2.6458 1.0000 ```

Compute the three-point centered moving standard deviation of a row vector and normalize each standard deviation by the number of elements in the window.

```A = [4 8 6 -1 -2 -3 -1 3 4 5]; M = movstd(A,3,1)```
```M = Columns 1 through 7 2.0000 1.6330 3.8586 3.5590 0.8165 0.8165 2.4944 Columns 8 through 10 2.1602 0.8165 0.5000 ```

Compute the three-point centered moving standard deviation for each row of a matrix. The window starts on the first row, slides horizontally to the end of the row, then moves to the second row, and so on. The dimension argument is two, which slides the window across the columns of `A`. Always specify the normalization factor when specifying the dimension.

```A = [4 8 6; -1 -2 -3; -1 3 4]; M = movstd(A,3,0,2)```
```M = 2.8284 2.0000 1.4142 0.7071 1.0000 0.7071 2.8284 2.6458 0.7071 ```

Compute the three-point centered moving standard deviation of a row vector containing two `NaN` elements.

```A = [4 8 NaN -1 -2 -3 NaN 3 4 5]; M = movstd(A,3)```
```M = Columns 1 through 7 2.8284 NaN NaN NaN 1.0000 NaN NaN Columns 8 through 10 NaN 1.0000 0.7071 ```

Recalculate the standard deviation, but omit the `NaN` values. When `movstd` discards `NaN` elements, it takes the standard deviation over the remaining elements in the window.

`M = movstd(A,3,'omitnan')`
```M = Columns 1 through 7 2.8284 2.8284 6.3640 0.7071 1.0000 0.7071 4.2426 Columns 8 through 10 0.7071 1.0000 0.7071 ```

Compute a 3-hour centered moving standard deviation of the data in `A` according to the time vector `t`.

```A = [4 8 6 -1 -2 -3]; k = hours(3); t = datetime(2016,1,1,0,0,0) + hours(0:5) ```
```t = 1x6 datetime array Columns 1 through 3 01-Jan-2016 00:00:00 01-Jan-2016 01:00:00 01-Jan-2016 02:00:00 Columns 4 through 6 01-Jan-2016 03:00:00 01-Jan-2016 04:00:00 01-Jan-2016 05:00:00 ```
```M = movstd(A,k,'SamplePoints',t) ```
```M = 2.8284 2.0000 4.7258 4.3589 1.0000 0.7071 ```

Compute the three-point centered moving standard deviation of a row vector, but discard any calculation that uses fewer than three points from the output. In other words, return only the standard deviations computed from a full three-element window, discarding endpoint calculations.

```A = [4 8 6 -1 -2 -3 -1 3 4 5]; M = movstd(A,3,'Endpoints','discard')```
```M = Columns 1 through 7 2.0000 4.7258 4.3589 1.0000 1.0000 3.0551 2.6458 Column 8 1.0000 ```

## Input Arguments

collapse all

Input array, specified as a vector, matrix, or multidimensional array.

Data Types: `single` | `double` | `logical`

Window length, specified as a numeric or duration scalar. When `k` is a positive integer scalar, the centered standard deviation includes the element in the current position plus surrounding neighbors. For example, a three-point standard deviation defined by a window of length three results in the following calculation for a vector `A`:

Data Types: `single` | `double` | `int8` | `int16` | `int32` | `int64` | `uint8` | `uint16` | `uint32` | `uint64` | `duration`

Directional window length, specified as a numeric or duration row vector containing two elements. When `kb` and `kf` are positive integer scalars, the calculation is over `kb+kf+1` elements. The calculation includes the element in the current position, `kb` elements before the current position, and `kf` elements after the current position. For example, a four-point standard deviation defined by the directional window `[2 1]` results in the following calculation for a vector `A`:

Data Types: `single` | `double` | `int8` | `int16` | `int32` | `int64` | `uint8` | `uint16` | `uint32` | `uint64` | `duration`

Weight, specified as one of these values:

• `0` — Normalize by `k-1`, where `k` is the window length. If `k=1`, the weight is `k`.

• `1` — Normalize by `k`.

Data Types: `single` | `double`

Dimension to operate along, specified as a positive integer scalar. If no value is specified, then the default is the first array dimension whose size does not equal 1.

Dimension `dim` indicates the dimension that `movstd` operates along, that is, the direction in which the specified window slides.

Consider a two-dimensional input array, `A`.

• If `dim = 1`, then `movstd(A,k,0,1)` starts with the first column and slides vertically over each row. The standard deviation is taken over `k` elements at a time. Then it moves to the second column and repeats the computation. This process continues until all columns are exhausted. The argument `0` specifies the default weight, which is required when specifying `dim`.

• If `dim = 2`, then `movstd(A,k,0,2)` starts with the first row and slides horizontally across each column. The standard deviation is taken over `k` elements at a time. Then it moves to the second row and repeats the computation. This process continues until all rows are exhausted. The argument `0` specifies the default weight, which is required when specifying `dim`.

Data Types: `double` | `single` | `int8` | `int16` | `int32` | `int64` | `uint8` | `uint16` | `uint32` | `uint64`

`NaN` condition, specified as one of these values:

• `'includenan'` — Include `NaN` values from the input when computing the standard deviation, resulting in the output `NaN`.

• `'omitnan'` — Ignore all `NaN` values in the input. If a window contains only `NaN` values, then `movstd` returns `NaN`.

### Name-Value Pair Arguments

Specify optional comma-separated pairs of `Name,Value` arguments. `Name` is the argument name and `Value` is the corresponding value. `Name` must appear inside single quotes (`' '`). You can specify several name and value pair arguments in any order as `Name1,Value1,...,NameN,ValueN`.

Example: `M = movstd(A,k,'Endpoints','fill')`

collapse all

Method to treat leading and trailing windows, specified as the comma-separated pair consisting of `'Endpoints'` and one of the following:

`'Endpoints'` ValueDescription
`'shrink'`Shrink the window size near the endpoints of the input to include only existing elements.
`'discard'`Do not output any standard deviations when the window does not completely overlap with existing elements.
`'fill'`Substitute nonexisting elements with `NaN`.
numeric or logical scalarSubstitute nonexisting elements with a specified numeric or logical value.

Data Types: `double` | `single` | `int8` | `int16` | `int32` | `int64` | `uint8` | `uint16` | `uint32` | `uint64` | `logical` | `char` | `string`

Sample points for computing standard deviations, specified as the comma-separated pair consisting of `'SamplePoints'` and a vector. The sample points represent the location of the data in `A`. Sample points do not need to be uniformly sampled. By default, the sample points vector is `[1 2 3 ... ]`.

Moving windows are defined relative to the sample points, which must be sorted and contain unique elements. For example, if `t` is a vector of times corresponding to the input data, then `movstd(rand(1,10),3,'SamplePoints',t)` has a window that represents the time interval between `t(i)-1.5` and `t(i)+1.5`.

When the sample points vector has data type `datetime` or `duration`, then the moving window length must have type `duration`.

If the sample points are nonuniformly spaced and the `'Endpoints'` name-value pair is specified, then its value must be `'shrink'`.

Data Types: `single` | `double` | `int8` | `int16` | `int32` | `int64` | `uint8` | `uint16` | `uint32` | `uint64` | `datetime` | `duration`

collapse all

### Standard Deviation

For a random variable vector A made up of N scalar observations, the standard deviation is defined as

`$\begin{array}{l}S={\sqrt{\frac{1}{N-1}\sum _{i=1}^{N}|{A}_{i}-\mu {|}^{2}}}^{},\hfill \\ \hfill \end{array}$`
where μ is the mean of A:
`$\mu =\frac{1}{N}\sum _{i=1}^{N}{A}_{i}.$`
The standard deviation is the square root of the variance. Some definitions of standard deviation use a normalization factor of N instead of N-1, which you can specify by setting `w` to `1`.