movmean
移动均值
语法
说明
M = movmean(___,
指定包含还是省略 nanflag
)A
中的 NaN
值。例如,movmean(A,k,"omitnan")
在计算每个均值时会忽略 NaN
值。默认情况下,movmean
包括 NaN
值。
M = movmean(___,
使用一个或多个名称-值参量指定移动平均值的其他参数。例如,如果 Name,Value
)x
是时间值向量,则 movmean(A,k,"SamplePoints",x)
相对于 x
中的时间计算移动平均值。
示例
向量的中心移动平均值
计算行向量的三点中心移动平均值。当端点处的窗口中少于三个元素时,将根据可用元素计算平均值。
A = [4 8 6 -1 -2 -3 -1 3 4 5]; M = movmean(A,3)
M = 1×10
6.0000 6.0000 4.3333 1.0000 -2.0000 -2.0000 -0.3333 2.0000 4.0000 4.5000
向量的尾部移动平均值
计算行向量的三点尾部移动平均值。当端点处的窗口中少于三个元素时,将根据可用元素计算平均值。
A = [4 8 6 -1 -2 -3 -1 3 4 5]; M = movmean(A,[2 0])
M = 1×10
4.0000 6.0000 6.0000 4.3333 1.0000 -2.0000 -2.0000 -0.3333 2.0000 4.0000
矩阵的移动平均值
计算矩阵中每行的三点中心移动平均值。窗从第一行开始,沿水平方向移动到该行的末尾,然后移到第二行,依此类推。维度参量为 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 = movmean(A,3,2)
M = 3×3
6.0000 6.0000 7.0000
-1.5000 -2.0000 -2.5000
1.0000 2.0000 3.5000
包含缺失值的向量的移动平均值
计算包含两个 NaN
元素的行向量的三点中心移动平均值。
A = [4 8 NaN -1 -2 -3 NaN 3 4 5]; M = movmean(A,3)
M = 1×10
6.0000 NaN NaN NaN -2.0000 NaN NaN NaN 4.0000 4.5000
重新计算平均值,但忽略 NaN
值。当 movmean
忽略 NaN
元素时,它将根据窗中的剩余元素计算平均值。
M = movmean(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 = movmean(A,k,"SamplePoints",t)
M = 1×6
6.0000 6.0000 4.3333 1.0000 -2.0000 -2.5000
仅返回满窗口平均值
计算行向量的三点中心移动平均值,但在输出中舍弃使用的点数少于三个的计算。也就是说,只返回从满的三元素窗口计算的平均值,而舍弃端点计算。
A = [4 8 6 -1 -2 -3 -1 3 4 5]; M = movmean(A,3,"Endpoints","discard")
M = 1×8
6.0000 4.3333 1.0000 -2.0000 -2.0000 -0.3333 2.0000 4.0000
输入参数
A
— 输入数组
向量 | 矩阵 | 多维数组
输入数组,指定为向量、矩阵或多维数组。
k
— 窗长度
数值或持续时间标量
窗长度,指定为数值或持续时间标量。当 k
是正整数标量时,中心平均值包括当前位置的元素以及周围的相邻元素。
例如,movmean(A,3)
计算一个由局部三点均值组成的数组。
[kb kf]
— 定向窗长度
包含两个元素的数值或持续时间行向量
定向窗长度,指定为包含两个元素的数值或持续时间行向量。当 kb
和 kf
为正整数标量时,将基于 kb+kf+1
个元素进行计算。该计算包括当前位置的元素、当前位置前面的 kb
个元素以及当前位置后面的 kf
个元素。
例如,movmean(A,[2 1])
计算一个由局部四点均值组成的数组。
dim
— 沿其运算的维度
正整数标量
沿其运算的维度,指定为正整数标量。如果不指定维度,则默认为第一个大于 1 的数组维度。
维度 dim
表示 movmean
运算所沿的维度,即指定窗的移动方向。
以一个 m
×n
输入矩阵 A
为例:
movmean(A,k,1)
为A
的每列计算包含k
个元素的移动均值,并返回一个m
×n
矩阵。movmean(A,k,2)
为A
的每行计算包含k
个元素的移动均值,并返回一个m
×n
矩阵。
nanflag
— 缺失值条件
"includemissing"
(默认) | "includenan"
| "omitmissing"
| "omitnan"
缺失值条件,指定为下列值之一:
"includemissing"
或"includenan"
- 在计算每个均值时包括A
中的NaN
值。如果窗中的任一元素是NaN
,则M
中的对应元素是NaN
。"includemissing"
和"includenan"
具有相同的行为。"omitmissing"
或"omitnan"
- 忽略A
中的NaN
值,并基于较少的点计算每个均值。如果窗中的所有元素都是NaN
,则M
中的对应元素是NaN
。"omitmissing"
和"omitnan"
具有相同的行为。
名称-值参数
将可选的参量对组指定为 Name1=Value1,...,NameN=ValueN
,其中 Name
是参量名称,Value
是对应的值。名称-值参量必须出现在其他参量之后,但参量对组的顺序无关紧要。
在 R2021a 之前,使用逗号分隔每个名称和值,并用引号将 Name
引起来。
示例: M = movmean(A,k,"Endpoints","fill")
Endpoints
— 窗口接近端点时的处理方法
"shrink"
(默认) | "discard"
| "fill"
| 数值或逻辑标量
窗口接近端点时的处理方法,指定为以下选项之一:
值 | 描述 |
---|---|
"shrink" | 在窗接近输入端点时缩小窗口的大小,从而只包括现有元素。 |
"discard" | 当窗不与现有元素完全重叠时,不输出任何平均值。 |
"fill" | 将不存在的元素替换为 NaN 值。 |
数值或逻辑标量 | 将不存在的元素替换为指定的数值或逻辑值。 |
SamplePoints
— 用于计算平均值的样本点
向量
用于计算平均值的样本点,指定为向量。样本点表示数据在 A
中的位置。样本点不需要均匀采样。默认情况下,样本点向量为 [1 2 3 ... ]
。
移动窗相对于样本点定义,样本点必须已排序并且包含唯一的元素。例如,如果 t
是与输入数据对应的时间向量,则 movmean(rand(1,10),3,"SamplePoints",t)
将有一个代表 t(i)-1.5
和 t(i)+1.5
之间时间间隔的窗。
当样本点向量的数据类型为 datetime
或 duration
时,移动窗长度的类型必须为 duration
。
如果样本点的间距不均匀并且指定了 Endpoints
,则其值必须为 "shrink"
。
详细信息
均值
对于由 N 标量观测值组成的有限长向量 A,均值定义为
扩展功能
tall 数组
对行数太多而无法放入内存的数组进行计算。
C/C++ 代码生成
使用 MATLAB® Coder™ 生成 C 代码和 C++ 代码。
基于线程的环境
使用 MATLAB® backgroundPool
在后台运行代码或使用 Parallel Computing Toolbox™ ThreadPool
加快代码运行速度。
此函数完全支持基于线程的环境。有关详细信息,请参阅在基于线程的环境中运行 MATLAB 函数。
GPU 数组
通过使用 Parallel Computing Toolbox™ 在图形处理单元 (GPU) 上运行来加快代码执行。
用法说明和限制:
不支持
SamplePoints
名称-值参量。
有关详细信息,请参阅Run MATLAB Functions on a GPU (Parallel Computing Toolbox)。
分布式数组
使用 Parallel Computing Toolbox™ 在集群的组合内存中对大型数组进行分区。
此函数完全支持分布式数组。有关详细信息,请参阅Run MATLAB Functions with Distributed Arrays (Parallel Computing Toolbox)。
版本历史记录
在 R2016a 中推出R2023a: 指定缺失值条件
使用 "includemissing"
或 "omitmissing"
选项计算每个均值时,包括还是忽略输入数组中的缺失值。这些选项的行为分别与 "includenan"
和 "omitnan"
选项相同。
R2023a: 改进了使用样本点计算矩阵时的性能
当存在样本点时,movmean
函数对矩阵进行计算时的性能得到了改进。
例如,以下代码计算一个 300×300 矩阵与对应样本点的移动均值。代码执行速度比上一版本大约快 1.9 倍。
function timingMovmean A = randn(300); t = sort(rand(300,1)); tic for k = 1:2000 movmean(A,0.1,"SamplePoints",t); end toc end
大致的执行时间是:
R2022b:1.04 秒
R2023a:0.56
代码是在运行 Windows® 10 的 Intel® Xeon® CPU E5-1650 v4 @ 3.60 GHz 测试系统上通过调用 timingMovmean
函数进行计时的。
MATLAB 命令
您点击的链接对应于以下 MATLAB 命令:
请在 MATLAB 命令行窗口中直接输入以执行命令。Web 浏览器不支持 MATLAB 命令。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)