本页对应的英文页面已更新,但尚未翻译。 若要查看最新内容,请点击此处访问英文页面。

movstd

移动标准差

说明

示例

M = movstd(A,k) 返回由局部 k 个数据点的标准差值组成的数组。每个标准差基于 A 的相邻元素的长度为 k 的移动窗口计算得出。当 k 为奇数时,窗口以当前位置的元素为中心。当 k 为偶数时,窗口以当前元素及其前一个元素为中心。当没有足够的元素填满窗口时,窗口将自动在端点处截断。当窗口被截断时,只根据窗口内的元素计算标准差。MA 的大小相同。

  • 如果 A 是向量,movstd 将沿该向量的长度运算。

  • 如果 A 为多维数组,则 movstd 沿大小不等于 1 的第一个数组维度进行运算。

示例

M = movstd(A,[kb kf]) 计算长度为 kb+kf+1 的窗口的标准差。该计算包括当前位置的元素、后面的 kb 个元素和前面的 kf 个元素。

示例

M = movstd(___,w) 为上述任意语法指定归一化因子。当 w = 0 时(默认值),Mk-1k 进行归一化。当 w = 1 时,Mk 进行归一化。

示例

M = movstd(___,w,dim) 为上述任意语法返回维度 dim 上的移动标准差数组。指定 dim 时,始终在上述语法中指定权重 w。例如,movstd(A,k,0,2) 沿矩阵 A 的列进行运算,计算每一行的 k 个元素的移动标准差。归一化因子是默认值 k-1

示例

M = movstd(___,nanflag) 指定在上述任意语法的计算中包括还是忽略 NaN 值。movstd(A,k,'includenan') 会在计算中包括所有 NaN 值,而 movstd(A,k,'omitnan') 则忽略这些值并基于较少的点计算标准差。

示例

M = movstd(___,Name,Value) 使用一个或多个名称-值对组参数指定移动标准差的其他参数。例如,如果 x 是时间向量,则 movstd(A,k,'SamplePoints',x) 相对于 x 中的时间计算移动标准差。

示例

全部折叠

计算行向量的三点中心移动标准差。当端点处的窗口中少于三个元素时,将根据可用元素计算标准差。

A = [4 8 6 -1 -2 -3 -1 3 4 5];
M = movstd(A,3)
M = 1×10

    2.8284    2.0000    4.7258    4.3589    1.0000    1.0000    3.0551    2.6458    1.0000    0.7071

计算行向量的三点尾部移动标准差。当端点处的窗口中少于三个元素时,将根据可用元素计算标准差。

A = [4 8 6 -1 -2 -3 -1 3 4 5];
M = movstd(A,[2 0])
M = 1×10

         0    2.8284    2.0000    4.7258    4.3589    1.0000    1.0000    3.0551    2.6458    1.0000

计算行向量的三点中心移动标准差,并按照窗口中的元素数对每个标准差进行归一化。

A = [4 8 6 -1 -2 -3 -1 3 4 5];
M = movstd(A,3,1)
M = 1×10

    2.0000    1.6330    3.8586    3.5590    0.8165    0.8165    2.4944    2.1602    0.8165    0.5000

计算矩阵中每行的三点中心移动标准差。窗口从第一行开始,沿水平方向移动到该行的末尾,然后移到第二行,依此类推。维度参数为 2,即跨 A 的列移动窗口。指定维度时,始终指定归一化因子。

A = [4 8 6; -1 -2 -3; -1 3 4];
M = movstd(A,3,0,2)
M = 3×3

    2.8284    2.0000    1.4142
    0.7071    1.0000    0.7071
    2.8284    2.6458    0.7071

计算包含两个 NaN 元素的行向量的三点中心移动标准差。

A = [4 8 NaN -1 -2 -3 NaN 3 4 5];
M = movstd(A,3)
M = 1×10

    2.8284       NaN       NaN       NaN    1.0000       NaN       NaN       NaN    1.0000    0.7071

重新计算标准差,但忽略 NaN 值。当 movstd 舍弃 NaN 元素时,它将根据窗口中的剩余元素计算标准差。

M = movstd(A,3,'omitnan')
M = 1×10

    2.8284    2.8284    6.3640    0.7071    1.0000    0.7071    4.2426    0.7071    1.0000    0.7071

根据时间向量 t,计算 A 中数据的 3 小时中心移动标准差。

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 = 1×6

    2.8284    2.0000    4.7258    4.3589    1.0000    0.7071

计算行向量的三点中心移动标准差,但在输出中舍弃使用的点数少于三个的计算。也就是说,只返回从满的三元素窗口计算的标准差,而舍弃端点计算。

A = [4 8 6 -1 -2 -3 -1 3 4 5];
M = movstd(A,3,'Endpoints','discard')
M = 1×8

    2.0000    4.7258    4.3589    1.0000    1.0000    3.0551    2.6458    1.0000

输入参数

全部折叠

输入数组,指定为向量、矩阵或多维数组。

数据类型: single | double | logical

窗口长度,指定为数值或持续时间标量。当 k 是正整数标量时,中心标准差包括当前位置的元素以及周围的相邻元素。例如,对于向量 A,由长度为三的窗口定义的三点标准差将产生下列计算:

数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | duration

定向窗口长度,指定为包含两个元素的数值或持续时间行向量。当 kbkf 为正整数标量时,将基于 kb+kf+1 个元素进行计算。该计算包括当前位置的元素、当前位置前面的 kb 个元素以及当前位置后面的 kf 个元素。例如,对于向量 A,由定向窗口 [2 1] 定义的四点标准差将产生下列计算:

数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | duration

权重,指定为下列值之一:

  • 0 - 按 k-1 进行归一化,其中 k 是窗口长度。如果 k=1,则权重为 k

  • 1 - 按 k 实现归一化。

数据类型: single | double

沿其运算的维度,指定为正整数标量。如果未指定值,则默认值是大小不等于 1 的第一个数组维度。

维度 dim 表示 movstd 运算所沿的维度,即指定的窗口的移动方向。

以一个二维输入数组 A 为例。

  • 如果 dim = 1,则 movstd(A,k,0,1) 从第一列开始,垂直移过每行,每次计算 k 个元素的标准差。然后移到第二列,重复上述计算。此过程持续到所有列都计算完为止。参数 0 指定默认权重,这是指定 dim 时所必需的。

  • 如果 dim = 2,则 movstd(A,k,0,2) 从第一行开始,水平移过每列。每次计算 k 个元素的标准差。然后移到第二行,重复上述计算。此过程持续到所有行都计算完为止。参数 0 指定默认权重,这是指定 dim 时所必需的。

数据类型: double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

NaN 条件,指定为下列值之一:

  • 'includenan' - 计算标准差时包括输入中的 NaN 值,其对应输出为 NaN 值。

  • 'omitnan' - 忽略输入中的所有 NaN 值。如果窗口只包含 NaN 值,则 movstd 返回 NaN

名称-值对组参数

指定可选的、以逗号分隔的 Name,Value 对组参数。Name 为参数名称,Value 为对应的值。Name 必须放在引号中。您可采用任意顺序指定多个名称-值对组参数,如 Name1,Value1,...,NameN,ValueN 所示。

示例: M = movstd(A,k,'Endpoints','fill')

用于处理前导和尾部窗口的方法,指定为以逗号分隔的对组,包含 'Endpoints' 和下列项之一:

'Endpoints'说明
'shrink'在窗口接近输入端点时缩小窗口的大小,从而只包括现有元素。
'discard'当窗口不与现有元素完全重叠时,不输出任何标准差。
'fill'将不存在的元素替换为 NaN
数值或逻辑标量将不存在的元素替换为指定的数值或逻辑值。

数据类型: double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | char | string

用于计算标准差的样本点,指定为以逗号分隔的对组,包含 'SamplePoints' 和一个向量。样本点表示数据在 A 中的位置。样本点不需要均匀采样。默认情况下,样本点向量为 [1 2 3 ... ]

移动窗口相对于样本点定义,样本点必须已排序并且包含唯一的元素。例如,如果 t 是与输入数据对应的时间向量,则 movstd(rand(1,10),3,'SamplePoints',t) 将有一个代表 t(i)-1.5t(i)+1.5 之间时间间隔的窗口。

当样本点向量的数据类型为 datetimeduration 时,移动窗口长度的类型必须为 duration

如果样本点的间距不均匀并且指定了 'Endpoints' 名称 - 值对组,则其值必须为 'shrink'

数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | datetime | duration

详细信息

全部折叠

标准差

对于由 N 个标量观测值组成的随机变量 A,标准差定义为

S=1N1i=1N|Aiμ|2,

,其中 μ 是 A:

μ=1Ni=1NAi.

的均值。标准差是方差的平方根。有些标准差的定义使用 N(而非 N-1)的归一化因子,这种情况下您可以通过将 w 设置为 1 来进行指定。

扩展功能

另请参阅

| | | |

在 R2016a 中推出