MATLAB中movmedian函数用法

目录

语法

说明

示例

向量的中心移动中位数

向量的尾部移动中位数

矩阵的移动中位数

排除缺失值的移动中位数

基于样本点计算移动中位数

仅返回满窗口中位数


        movmedian函数功能是使用移动的方法对数据进行求取中位数。

语法

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

说明

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

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

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

        M = movmedian(A,[kb kf]) 通过长度为 kb+kf+1 的窗口计算中位数,其中包括当前位置的元素、前面的 kb 个元素和后面的 kf 个元素。

        ​M = movmedian(___,dim) 为上述任一语法指定 A 的运算维度。例如,如果 A 是矩阵,则 movmedian(A,k,2) 沿 A 的列运算,计算每行的 k 个元素的移动中位数。​

        ​M = movmedian(___,nanflag) 指定包含还是省略 A 中的 NaN 值。例如,movmedian(A,k,"omitnan") 在计算每个中位数时会忽略 NaN 值。默认情况下,movmedian 包括 NaN 值。​

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

示例

向量的中心移动中位数

        计算行向量的三点中心移动中位数。当端点处的窗口中少于三个元素时,将根据可用元素计算平均值。

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

    6.0000    6.0000    6.0000   -1.0000   -2.0000   -2.0000   -1.0000    3.0000    4.0000    4.5000

向量的尾部移动中位数

        计算行向量的三点尾部移动中位数。当端点处的窗口中少于三个元素时,将根据可用元素计算平均值。

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

     4     6     6     6    -1    -2    -2    -1     3     4

矩阵的移动中位数

        计算矩阵中每行的三点中心移动中位数。窗从第一行开始,沿水平方向移动到该行的末尾,然后移到第二行,依此类推。维度参数为 2,即跨 A 的列移动窗。

A = [4 8 6; -1 -2 -3; -1 3 4]
A = 3×3

     4     8     6
    -1    -2    -3
    -1     3     4

M = movmedian(A,3,2)
M = 3×3

    6.0000    6.0000    7.0000
   -1.5000   -2.0000   -2.5000
    1.0000    3.0000    3.5000

排除缺失值的移动中位数

        创建一个包含 NaN 值的行向量。

A = [4 8 NaN -1 -2 -3 NaN 3 4 5];

        计算向量的三点中心移动中位数,不包括 NaN 值。对于包含任一 NaN 值的窗,movmedian 使用非 NaN 元素进行计算。

M = movmedian(A,3,"omitnan")
M = 1×10

    6.0000    6.0000    3.5000   -1.5000   -2.0000   -2.5000         0    3.5000    4.0000    4.5000

基于样本点计算移动中位数

        根据时间向量 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
   01-Jan-2016 00:00:00   01-Jan-2016 01:00:00   01-Jan-2016 02:00:00   01-Jan-2016 03:00:00   01-Jan-2016 04:00:00   01-Jan-2016 05:00:00



M = movmedian(A,k,"SamplePoints",t)
M = 1×6

    6.0000    6.0000    6.0000   -1.0000   -2.0000   -2.5000

仅返回满窗口中位数

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

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

     6     6    -1    -2    -2    -1     3     4

参数说明

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

k:窗长度,指定为数值或持续时间标量。当 k 是正整数标量时,中心中位数包括当前位置的元素以及周围的相邻元素。

        例如,movmedian(A,3) 计算一个由局部三点中位数值组成的数组。

MATLAB中movmedian函数用法_第1张图片

[kb kf]:定向窗长度,指定为包含两个元素的数值或持续时间行向量。当 kb 和 kf 为正整数标量时,将基于 kb+kf+1 个元素进行计算。该计算包括当前位置的元素、当前位置前面的 kb 个元素以及当前位置后面的 kf 个元素。

例如,movmedian(A,[2 1]) 计算一个由局部四点中位数值组成的数组。

MATLAB中movmedian函数用法_第2张图片

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

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

以一个 m×n 输入矩阵 A 为例:

·movmedian(A,k,1) 为 A 的每列计算包含 k 个元素的移动中位数,并返回一个 m×n 矩阵。

MATLAB中movmedian函数用法_第3张图片

·movmedian(A,k,2) 为 A 的每行计算包含 k 个元素的移动中位数,并返回一个 m×n 矩阵。

MATLAB中movmedian函数用法_第4张图片

你可能感兴趣的:(Matlab,matlab,开发语言)