histcounts2
二元直方图 bin 计数
语法
说明
[
按照 N
,Xedges
,Yedges
] = histcounts2(X,Y
,Xedges
,Yedges
)Xedges
和 Yedges
指定的 bin 边界,将 X
和 Y
划分为多个 bin。
N(i,j)
对符合 Xedges(i)
≤ X(k)
< Xedges(i+1)
且 Yedges(j)
≤ Y(k)
< Yedges(j+1)
条件的值 [X(k),Y(k)]
进行计数。每个维度中的最后 bin 还包含最后一个(外部)边界。例如,如果 Xedges(end-1)
≤ X(k)
≤ Xedges(end)
且 Yedges(i)
≤ Y(k)
< Yedges(i+1)
,则 [X(k),Y(k)]
属于最后一行中的第 i
个 bin。
[
还可使用一个或多个 N
,Xedges
,Yedges
] = histcounts2(___,Name,Value
)Name,Value
对组参数(采用上述语法中有任意输入参数)指定的其他选项。例如,可以指定 'BinWidth'
和一个二元素向量来调整每个维度中 bin 的宽度。
示例
bin 计数和 bin 边界
将 100 个随机数对组分布到多个 bin 内。histcounts2
自动选择合适的 bin 宽度以显示数据的基本分布。
x = randn(100,1); y = randn(100,1); [N,Xedges,Yedges] = histcounts2(x,y)
N = 7×6
0 0 0 2 0 0
1 2 10 4 0 0
1 4 9 9 5 0
1 4 10 11 5 1
1 4 6 3 1 1
0 0 1 2 0 0
0 0 1 0 1 0
Xedges = 1×8
-3 -2 -1 0 1 2 3 4
Yedges = 1×7
-3 -2 -1 0 1 2 3
指定每个维度中的 bin 数量
将 10 个数字对组分布到 12 个 bin 中。在 x 维度指定 3 个 bin,在 y 维度指定 4 个 bin。
x = [1 1 2 3 2 2 1 1 2 3]; y = [5 6 3 8 9 1 2 7 5 1]; nbins = [3 4]; [N,Xedges,Yedges] = histcounts2(x,y,nbins)
N = 3×4
1 0 2 1
1 1 1 1
1 0 0 1
Xedges = 1×4
0.6000 1.4000 2.2000 3.0000
Yedges = 1×5
0 2.3000 4.6000 6.9000 9.2000
指定 bin 边界
将 1,000 个随机数对组分布到多个 bin 内。使用两个向量(分别针对 x 和 y 维度)定义 bin 边界。每个向量中的第一个元素指定第一个 bin 的第一个边界,最后一个元素指定最后一个 bin 的最后一个边界。
x = randn(1000,1); y = randn(1000,1); Xedges = -5:5; Yedges = [-5 -4 -2 -1 -0.5 0 0.5 1 2 4 5]; N = histcounts2(x,y,Xedges,Yedges)
N = 10×10
0 0 0 0 0 0 0 0 0 0
0 0 0 0 1 1 1 0 0 0
0 0 5 5 3 5 1 2 0 0
0 2 19 23 29 25 26 20 5 0
0 10 36 51 59 71 54 46 10 0
0 7 43 46 79 64 60 46 9 0
0 3 12 18 21 23 19 9 6 0
0 0 5 3 2 8 2 2 0 0
0 0 0 1 1 1 0 0 0 0
0 0 0 0 0 0 0 0 0 0
归一化的 bin 计数
将 1,000 个随机数对组分布到多个 bin 内。将 Normalization
指定为 'probability'
以对 bin 计数进行归一化处理,从而 sum(N(:))
为 1
。即,每个 bin 计数代表观测值属于该 bin 的可能性。
x = randn(1000,1); y = randn(1000,1); [N,Xedges,Yedges] = histcounts2(x,y,6,'Normalization','probability')
N = 6×6
0 0 0.0020 0.0020 0 0
0 0.0110 0.0320 0.0260 0.0070 0.0010
0.0010 0.0260 0.1410 0.1750 0.0430 0.0060
0 0.0360 0.1620 0.1940 0.0370 0.0040
0 0.0040 0.0300 0.0370 0.0100 0.0010
0 0.0030 0.0040 0.0040 0.0010 0
Xedges = 1×7
-4.0000 -2.7000 -1.4000 -0.1000 1.2000 2.5000 3.8000
Yedges = 1×7
-4.0000 -2.7000 -1.4000 -0.1000 1.2000 2.5000 3.8000
确定 bin 放置
将介于 -10 和 10 之间的 1000 个随机整数对组分布到多个 bin 内,并将 BinMethod
指定为 'integers'
以使用以整数为中心的单位宽度 bin。指定 histcounts2
的五个输出以返回表示数据 bin 位置的向量。
x = randi([-10,10],1000,1); y = randi([-10,10],1000,1); [N,Xedges,Yedges,binX,binY] = histcounts2(x,y,'BinMethod','integers');
确定值 (x(3),y(3))
属于哪个 bin。
[x(3),y(3)]
ans = 1×2
-8 10
bin = [binX(3) binY(3)]
bin = 1×2
3 21
输入参数
X,Y
— 要分布到各 bin 的数据(以单独参数指定)
向量 | 矩阵 | 多维数组
要分布到各 bin 的数据,指定为向量、矩阵或多维数组的单独参数。X
和 Y
的大小必须相同。
X
和 Y
中的对应元素指定二维数据点 [X(k),Y(k)]
的 x 和 y 坐标。X
和 Y
的数据类型可以不同。
histcounts2
忽略所有的 NaN
值。同样,histcounts2
忽略 Inf
和 -Inf
值,除非 bin 边界将 Inf
或 -Inf
显式指定为 bin 边界。
数据类型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| logical
nbins
— 每个维度中的 bin 数量
标量 | 向量
每个维度中的 bin 数量,指定为一个正整数标量或由正整数组成的二元素向量。如果不指定 nbins
,则 histcounts2
自动基于 X
和 Y
中的值计算要使用多少个 bin:
如果
nbins
是标量,则histcounts2
在每个维度中使用该标量所指定的 bin 数。如果
nbins
是向量,则nbins(1)
指定 x 维度的 bin 数,nbins(2)
指定 y 维度的 bin 数。
示例: [N,Xedges,Yedges] = histcounts2(X,Y,[15 20])
在 x
维度使用 15 个 bin,在 y
维度使用 20 个 bin。
Xedges
— x 维度中的 bin 边界
向量
x 维度中的 bin 边界,指定为向量。Xedges(1)
是 x 维度的第一个 bin 的第一个边界,Xedges(end)
是最后一个 bin 的外边界。
数据类型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| logical
Yedges
— y 维度中的 bin 边界
向量
y 维度中的 bin 边界,指定为向量。Yedges(1)
是 y 维度的第一个 bin 的第一个边界,Yedges(end)
是最后一个 bin 的外边界。
数据类型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| logical
名称-值参数
将可选的参数对组指定为 Name1=Value1,...,NameN=ValueN
,其中 Name
是参数名称,Value
是对应的值。名称-值参数必须出现在其他参数之后,但参数对组的顺序无关紧要。
在 R2021a 之前,使用逗号分隔每个名称和值,并用引号将 Name
引起来。
示例: [N,Xedges,Yedges] = histcounts2(X,Y,'Normalization','probability')
对 N
中的 bin 计数进行归一化,这样 sum(N)
为 1。
BinMethod
— 分 bin 算法
'auto'
(默认) | 'scott'
| 'fd'
| 'integers'
分 bin 算法,指定为此表中的一个值。
值 | 描述 |
---|---|
'auto' | 默认的 |
'scott' | 如果数据接近联合正态分布,则 Scott 规则最佳。该规则也适用于大多数的其他分布。它使用 bin 大小 |
'fd' | Freedman-Diaconis 规则对数据中的离群值不太敏感,可能更适用于重尾分布的数据。它使用 bin 大小 |
'integers' | 整数规则对整数数据有用,因为它创建以整数为中心的 bin。它对每个维度使用 bin 宽度 1 并将 bin 边界放在整数的中间。 为避免无意间创建太多 bin,可以使用此规则创建 1024 (210) 个 bin 的限制。如果任一维度的数据范围大于 1024,则整数规则改用更宽的 bin。 |
histcounts2
并不始终使用这些精确的公式来选择 bin 数目。有时 bin 数目会稍做调整,以便 bin 边界落在“合适”的数字上。
示例: [N,Xedges,Yedges] = histcounts2(X,Y,'BinMethod','integers')
使用以整数为中心的二维 bin。
BinWidth
— 每个维度中的 bin 宽度
向量
每个维度中的 bin 宽度,指定为由正整数组成的二元素向量 [xWidth yWidth]
。
如果指定 BinWidth
,则 histcounts2
可以沿每个维度使用最多 1024 (210) 个 bin。如果指定的 bin 宽度需要多个 bin,则 histcounts2
使用与最大 bin 数对应的较大的 bin 宽度。
示例: [N,Xedges,Yedges] = histcounts2(X,Y,'BinWidth',[5 10])
在 x
维度使用的 bin 的大小为 5
,在 y
维度使用的 bin 的大小为 10
。
XBinLimits
— x 维度的 bin 范围
二元素向量
x 维度的 bin 范围,指定为二元素向量 [xbmin,xbmax]
。该向量表示 x 维度中的第一个和最后一个 bin 边界。
此选项只对在 bin 范围 X>=xbmin & X<=xbmax
(包含这两个边界值)内的数据分 bin。
YBinLimits
— y 维度的 bin 范围
二元素向量
y 维度的 bin 范围,指定为二元素向量 [ybmin,ybmax]
。该向量表示 y 维度中的第一个和最后一个 bin 边界。
此选项只对在 bin 范围 Y>=ybmin & Y<=ybmax
(包含这两个边界值)内的数据分 bin。
Normalization
— 归一化类型
'count'
(默认) | 'probability'
| 'countdensity'
| 'pdf'
| 'cumcount'
| 'cdf'
归一化类型,指定为此表中的一个值。对于每个 bin i
:
是 bin 的值。
是 bin 中的元素数目。
是每个 bin 的面积,使用 bin 宽度 x 和 y 计算得出。
是输入数据中的元素数目。此值可以大于分 bin 数据元素数,前提是数据中包含
NaN
值,或者某些数据位于 bin 范围外。
值 | bin 值 | 注释 |
---|---|---|
'count' (默认值) |
|
|
'countdensity' |
|
|
'cumcount' |
|
|
'probability' |
|
|
'pdf' |
|
|
'cdf' |
|
|
示例: [N,Xedges,Yedges] = histcounts2(X,Y,'Normalization','pdf')
使用 X
和 Y
的概率密度函数估计值对数据进行分 bin。
输出参数
N
— bin 计数
数组
bin 计数,以数值数组形式返回。
不同编号的 bin 在 N
中的分布情况及其相对于 x 和 y 轴的方向如下图所示:
例如,bin (1,1)
包括位于每个维度中第一个边界上的值,右下角的最后一个 bin 包括位于其任何边界上的值。
Xedges
— x 维度中的 bin 边界
向量
x 维度中的 bin 边界,以向量形式返回。Xedges(1)
是 x 维度的第一个 bin 边界,Xedges(end)
是最后一个 bin 边界。
Yedges
— y 维度中的 bin 边界
向量
y 维度中的 bin 边界,以向量形式返回。Yedges(1)
是 y 维度的第一个 bin 边界,Yedges(end)
是最后一个 bin 边界。
binX
— x 维度中的 bin 索引
数组
x 维度中的 bin 索引,以数值数组形式返回,数组大小与 X
相同。binX
和 binY
中的对应元素说明哪个编号的 bin 包含 X
和 Y
中的对应值。binX
和 binY
中的 0
值表示元素不属于任何 bin(例如 NaN
值)。
例如,binX(1)
和 binY(1)
描述值 [X(1),Y(1)]
的 bin 位置。
binY
— y 维度中的 bin 索引
数组
y 维度中的 bin 索引,以数值数组形式返回,数组大小与 Y
相同。binX
和 binY
中的对应元素说明哪个编号的 bin 包含 X
和 Y
中的对应值。binX
和 binY
中的 0
值表示元素不属于任何 bin(例如 NaN
值)。
例如,binX(1)
和 binY(1)
描述值 [X(1),Y(1)]
的 bin 位置。
扩展功能
C/C++ 代码生成
使用 MATLAB® Coder™ 生成 C 代码和 C++ 代码。
用法说明和限制:
代码生成不支持对此函数使用稀疏矩阵输入。
如果您不提供 bin 边界,代码生成可能需要可变大小数组和动态内存分配。
基于线程的环境
使用 MATLAB® backgroundPool
在后台运行代码或使用 Parallel Computing Toolbox™ ThreadPool
加快代码运行速度。
此函数完全支持基于线程的环境。有关详细信息,请参阅Run MATLAB Functions in Thread-Based Environment。
版本历史记录
在 R2015b 中推出
另请参阅
histogram
| histcounts
| discretize
| histogram2
| morebins
| fewerbins
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)