AnyMath 文档

n.动,动

的移动中值。

库::`工程师`

语法

函数调用

* [参数:M]=movmedian([参数:A],[参数:k]) -通过以下方式返回局部中值 [参数:k] 在长度的滑动窗口中计算每个中值的点 [参数:k],其通过数组的相邻元素移动 [参数:A]. 如果 [参数:k] 奇数,窗口相对于当前位置的元素居中。 如果 [参数:k] 甚至,窗口相对于当前和以前的元素居中。 当没有足够的元素填充窗口时,窗口大小会在端点处自动截断。 当窗口被截断时,仅对填充窗口的元素取中位数。 [参数:M] 大小与 [参数:A].

**如果 [参数:A] -矢量,然后 *movmedian* 它作用于向量的长度 [参数:A]. **如果 [参数:A] -一个多维数组,然后 *movmedian* 它根据第一维进行操作 [参数:A],其大小不等于 1.

* [参数:M]=movmedian([参数:A],[参数:kbkf]) -用长度窗口计算中位数 kb+kf+1,其中包括当前位置的元素, kb 元素返回和 kf 我们继续吧。

* [参数:M]=movmedian(___,[参数:暗淡]) -定义矩阵的维度 [参数:A],其用于对任何先前语法选项执行所述操作。 例如,如果 [参数:A] -矩阵,然后 movmedian(A,k,2) 对矩阵的列执行操作 [参数:A],通过计算移动中位数 [参数:k] 每行的元素。

* [参数:M]=movmedian(___,[参数:nanflag]) -确定是否包括或排除值 到阵列 [参数:A]. 例如, movmedian(A,k,"omitnan") 忽略值 计算每个中值时。 默认情况下 *movmedian* 包括值 .

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

争论

输入参数

# *一个* — 输入数据

+ 向量资料 | 矩阵 | 多维数组

Details

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

数据类型

漂浮物32, 漂浮64, Int8, Int16, Int32, Int64, UInt8, UInt16, UInt32, UInt64, 布尔</无翻译>

# *k* — 窗口长度

+ 标量,标量

Details

窗口的长度,设置为标量。 如果 k -一个正整数,居中的中位数包括当前位置的元素及其邻居。

例如, 电影(A,3) 计算局部三点中位数的值数组。

movmedian 1

# *[kb kf]*是 方向窗口的长度

+ 双元素向量是一个字符串

Details

方向窗口的长度,设为包含两个元素的字符串向量。 如果 kbkf -正整数,计算由 kb+kf+1 的元素。 计算包括在当前位置的元素, kb 到当前位置的元素和 kf 当前位置之后的项目。

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

movmedian 2

# *昏暗* — 执行操作所遵循的维度

+ 正整数标量

Details

执行操作的维度被指定为正整数标量。 如果未指定维度,则默认使用数组的第一个维度,其大小不等于 1.

论点 昏暗 指定执行函数的维度 *movmedian*,即指定窗口移动的方向。

考虑输入矩阵 A 大小 mn:

* movmedian(A,k,1) 计算移动中位数 k 每列的元素 A 并返回大小的矩阵 mn.

+ movmedian 3

* movmedian(A,k,2) 计算移动中位数 k 矩阵每行的元素 A 并返回大小的矩阵 mn.

+ movmedian 4

# *nanflag* — 缺失值的条件

+ "包括" (默认)| "包括" | "省略" | "奥米特南"

Details

处理缺失值的条件,由以下值之一设置:

* "包括""包括" -启用值 [参数:A] 计算每个中值时。 如果窗口中有任何元素 — ,则相应的元素在 [参数:M]. 价值 "包括""包括" 他们的行为方式相同。

* "省略""omitnan" -忽略所有值 [参数:A] 并使用更少的点计算每个中值。 如果所有元素都在窗口中 — ,则相应的元素在 [参数:M]. 价值 "省略""奥米特南" 他们的行为方式相同。

名称-值输入参数

指定格式中的可选参数对 名称,值,在哪里 姓名 -参数的名称,以及 价值 -适当的值。 名称-值参数应该放在其他参数之后,但对的顺序无关紧要。

使用逗号分隔名称和值,以及 姓名 把它放在引号里。

*例子:* M=movmedian(A,k,"端点","填充").

# *端点* — 一种处理端点附近窗口的方法

+ "收缩" (默认情况下)| "丢弃" | "填充" | 标量,标量

Details

处理端点附近窗口的方法,由以下选项之一指定:

意义 资料描述

"收缩"

减小输入数据端点附近的窗口大小,以仅包含现有元素。

"丢弃"

如果窗口未完全重叠现有元素,则不显示任何中值。

"填充"

将不存在的元素替换为 .

标量,标量

用指定的数字或逻辑值替换不存在的元素。

# *采样点* — 用于计算介质的采样点

+ 向量资料

Details

用于计算median的样本点,设置为向量。 样本点表示数据在 [参数:A]. 样本点不必均匀分布。 默认情况下,样本点的向量为 [1 2 3 …​ ].

滑动窗口是相对于采样点定义的,采样点应该被排序并包含唯一的元素。 例如,如果 t 是输入数据对应的时间向量,则 movmedian(rand(1,10),3,"SamplePoints",t) 它有一个窗口表示之间的时间间隔 t[i]-1.5t[i]+1.5.

如果采样点间距不均匀并且设置了参数 [参数:端点],那么它的值应该是 "收缩".

输出参数

# *M* — 输出数据

+ 向量资料 | 矩阵 | 多维数组

Details

作为向量、矩阵或多维数组返回的输出数据。

例子:

矢量的中心移动中值

Details

计算行向量的三点居中移动中值。 如果数组末尾的窗口中少于三个元素,则计算可用元素的平均值。

import EngeeDSP.Functions: movmedian

A = [4 8 6 -1 -2 -3 -1 3 4 5]
M = movmedian(A,3)
1×10 Matrix{Float64}:
 6.0  6.0  6.0  -1.0  -2.0  -2.0  -1.0  3.0  4.0  4.5

矩阵的移动中值

Details

为矩阵的每一行计算三点居中的移动中值。 窗口从第一行开始,水平滑动到行尾,然后移动到第二行,依此类推。 维度参数是两个,它允许您在矩阵的列中滑动 A.

A = [4 8 6; -1 -2 -3; -1 3 4]
3×3 Matrix{Int64}:
  4   8   6
 -1  -2  -3
 -1   3   4
import EngeeDSP.Functions: movmedian

M = movmedian(A,3,2)
3×3 Matrix{Float64}:
  6.0   6.0   7.0
 -1.5  -2.0  -2.5
  1.0   3.0   3.5

移动中值而不丢失值

Details

创建包含值的向量字符串 .

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

计算向量的三点居中移动中位数,不包括值 . 对于包含任何值的窗口 ,功能 *movmedian* 计算考虑到除以下所有元素的值 .

import EngeeDSP.Functions: movmedian

M = movmedian(A,3,"omitnan")
1×10 Matrix{Float64}:
 6.0  6.0  3.5  -1.5  -2.0  -2.5  0.0  3.5  4.0  4.5

只返回完整窗口的中间部分

Details

计算行向量的三点居中移动中值,但丢弃使用来自输出数据的少于三个点的所有计算。 换句话说,我们将只返回为整个三元素窗口计算的中间值,而丢弃端点处的计算。

import EngeeDSP.Functions: movmedian

A = [4 8 6 -1 -2 -3 -1 3 4 5];
M = movmedian(A,3,"Endpoints","discard")
1×8 Matrix{Float64}:
 6.0  6.0  -1.0  -2.0  -2.0  -1.0  3.0  4.0