mean
数组的均值
语法
说明
M = mean(___,
指定包括还是忽略 missingflag
)A
中的缺失值。例如,mean(A,"omitmissing")
在计算均值时会忽略所有缺失值。默认情况下,mean
包括缺失值。
示例
矩阵列均值
创建一个矩阵并计算每列的均值。
A = [0 1 1; 2 3 2; 1 3 2; 4 2 2]
A = 4×3
0 1 1
2 3 2
1 3 2
4 2 2
M = mean(A)
M = 1×3
1.7500 2.2500 1.7500
矩阵行均值
创建一个矩阵并计算每行的均值。
A = [0 1 1; 2 3 2; 3 0 1; 1 2 3]
A = 4×3
0 1 1
2 3 2
3 0 1
1 2 3
M = mean(A,2)
M = 4×1
0.6667
2.3333
1.3333
2.0000
三维数组的均值
创建一个包含 1 到 10 之间整数的 4×2×3 数组,并沿第二个维度计算均值。
rng('default')
A = randi(10,[4,2,3]);
M = mean(A,2)
M = M(:,:,1) = 8.0000 5.5000 2.5000 8.0000 M(:,:,2) = 10.0000 7.5000 5.5000 6.0000 M(:,:,3) = 6.0000 5.5000 8.5000 10.0000
数组页的均值
创建一个三维数组并计算每页数据(行和列)的均值。
A(:,:,1) = [2 4; -2 1]; A(:,:,2) = [9 13; -5 7]; A(:,:,3) = [4 4; 8 -3]; M1 = mean(A,[1 2])
M1 = M1(:,:,1) = 1.2500 M1(:,:,2) = 6 M1(:,:,3) = 3.2500
要计算一个数组的所有维度上的均值,可以在向量维参数中指定每个维度,或使用 "all"
选项。
M2 = mean(A,[1 2 3])
M2 = 3.5000
Mall = mean(A,"all")
Mall = 3.5000
单精度数组的均值
创建一个由 1 组成的单精度向量并计算其单精度均值。
A = single(ones(10,1));
M = mean(A,"native")
M = single
1
结果也是单精度值。
class(M)
ans = 'single'
排除缺失值的均值
创建一个包含 NaN
值的矩阵。
A = [1.77 -0.005 NaN -2.95; NaN 0.34 NaN 0.19]
A = 2×4
1.7700 -0.0050 NaN -2.9500
NaN 0.3400 NaN 0.1900
计算矩阵的均值,不包括缺失值。对于包含任一 NaN
值的矩阵列,mean
使用非 NaN
元素进行计算。对于包含的值都是 NaN
的矩阵列,均值为 NaN
。
M = mean(A,"omitnan")
M = 1×4
1.7700 0.1675 NaN -1.3800
输入参数
A
— 输入数组
向量 | 矩阵 | 多维数组 | 表 | 时间表
输入数组,指定为向量、矩阵、多维数组、表或时间表。
如果
A
是标量,则mean(A)
返回A
。如果
A
为 0×0 空矩阵,则mean(A)
返回NaN
。
数据类型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| logical
| char
| datetime
| duration
| table
| timetable
dim
— 沿其运算的维度
正整数标量
沿其运算的维度,指定为正整数标量。如果不指定维度,则默认为第一个大于 1 的数组维度。
维度 dim
表示长度减至 1
的维度。size(M,dim)
为 1
,而所有其他维度的大小保持不变。
以一个 m
×n
输入矩阵 A
为例:
mean(A,1)
计算A
的每列中元素的均值,并返回一个1
×n
行向量。mean(A,2)
计算A
的每行中元素的均值,并返回一个m
×1
列向量。
当 dim
大于 ndims(A)
或者 size(A,dim)
为 1
时,mean
返回 A
。
vecdim
— 维度向量
正整数向量
维度向量,指定为正整数向量。每个元素代表输入数组的一个维度。指定的操作维度的输出长度为 1,而其他保持不变。
以 2×3×3 输入数组 A
为例。然后 mean(A,[1 2])
返回一个 1×1×3 数组,其元素是 A
的每个页面的均值。
outtype
— 输出数据类型
"default"
(默认) | "double"
| "native"
输出数据类型,指定为下表中的值之一。这些选项还指定执行运算采用的数据类型。
outtype | 输出数据类型 |
---|---|
"default" | double ,除非输入数据类型为 single 、duration 、datetime 、table 或 timetable ,在此情况下输出为 "native" |
"double" | double ,除非数据输入类型为 duration 、datetime 、table 或 timetable ,在此情况下不支持 "double" |
"native" | 与输入相同的数据类型,除非:
|
missingflag
— 缺失值条件
"includemissing"
(默认) | "includenan"
| "includenat"
| "omitmissing"
| "omitnan"
| "omitnat"
缺失值条件,指定为下表中的值之一。
值 | 输入数据类型 | 描述 |
---|---|---|
"includemissing" | 所有支持的数据类型 | 在计算均值时包括 |
"includenan" | double , single , duration | |
"includenat" | datetime | |
"omitmissing" | 所有支持的数据类型 | 忽略 A 中的缺失值并基于较少的点计算均值。如果运算维度中的所有元素都缺失,则 M 中的对应元素也会缺失。 |
"omitnan" | double , single , duration | |
"omitnat" | datetime |
详细信息
均值
对于由 N 标量观测值组成的有限长向量 A,均值定义为
扩展功能
tall 数组
对行数太多而无法放入内存的数组进行计算。
此函数完全支持 tall 数组。有关详细信息,请参阅 tall 数组。
C/C++ 代码生成
使用 MATLAB® Coder™ 生成 C 代码和 C++ 代码。
用法说明和限制:
如果指定
dim
,则它必须为常量。outtype
和missingflag
选项必须为常量字符向量或字符串。整数类型不支持
"native"
输出数据类型选项。请参阅Variable-Sizing Restrictions for Code Generation of Toolbox Functions (MATLAB Coder)。
GPU 代码生成
使用 GPU Coder™ 为 NVIDIA® GPU 生成 CUDA® 代码。
用法说明和限制:
如果指定
dim
,则它必须为常量。outtype
和missingflag
选项必须为常量字符向量或字符串。整数类型不支持
"native"
输出数据类型选项。
基于线程的环境
使用 MATLAB® backgroundPool
在后台运行代码或使用 Parallel Computing Toolbox™ ThreadPool
加快代码运行速度。
此函数完全支持基于线程的环境。有关详细信息,请参阅在基于线程的环境中运行 MATLAB 函数。
GPU 数组
通过使用 Parallel Computing Toolbox™ 在图形处理单元 (GPU) 上运行来加快代码执行。
mean
函数部分支持 GPU 数组。当您将输入数据指定为 gpuArray
(Parallel Computing Toolbox) 时,函数的某些语法可在 GPU 上运行。用法说明和限制:
不支持
"native"
选项。
有关详细信息,请参阅Run MATLAB Functions on a GPU (Parallel Computing Toolbox)。
分布式数组
使用 Parallel Computing Toolbox™ 在集群的组合内存中对大型数组进行分区。
用法说明和限制:
不支持
"native"
选项。
有关详细信息,请参阅Run MATLAB Functions with Distributed Arrays (Parallel Computing Toolbox)。
版本历史记录
在 R2006a 之前推出R2023a: 直接对表和时间表执行计算
mean
函数可以对表或时间表中的所有变量执行计算,而无需通过索引访问这些变量。所有变量都必须具有支持计算的数据类型。有关详细信息,请参阅Direct Calculations on Tables and Timetables。
R2023a: 指定缺失值条件
使用 "includemissing"
或 "omitmissing"
选项计算均值时,包括还是忽略输入数组中的所有缺失值。以前,"includenan"
、"omitnan"
、"includenat"
和 "omitnat"
指定特定于输入数组的数据类型的缺失值条件。
R2023a: 改进了处理小型组时的性能
在未指定运算维度的情况下对实数向量执行计算时,mean
函数的性能得到了改进。与在 R2022b 中相比,在 R2023a 中函数能够更快地确定默认运算维度。
例如,以下代码会计算沿默认向量维度的均值。代码执行速度比上一版本大约快 2.2 倍。
function timingMean A = rand(10,1); for i = 1:8e5 mean(A); end end
大致的执行时间是:
R2022b:0.91 秒
R2023a:0.41 秒
代码是在运行 Windows® 10 的 Intel® Xeon® CPU E5-1650 v4 @ 3.60 GHz 测试系统上使用 timeit
函数进行计时的。
timeit(@timingMean)
R2018b: 对多个维度执行运算
一次对输入数组的多个维度执行运算。指定一个由运算维度组成的向量,或指定 "all"
选项以对所有数组维度执行运算。
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)