Main Content

本页翻译不是最新的。点击此处可查看最新英文版本。

histcounts2

二元直方图 bin 计数

说明

示例

[N,Xedges,Yedges] = histcounts2(X,Y)XY 中的值划分为多个二维 bin,并返回 bin 计数以及每个维度的 bin 边界。histcounts2 函数使用自动分 bin 算法,然后返回均匀 bin,这些 bin 可涵盖 XY 中值的范围并显示分布的基本形状。

示例

[N,Xedges,Yedges] = histcounts2(X,Y,nbins) 指定要在每个维度中使用的 bin 数量。

示例

[N,Xedges,Yedges] = histcounts2(X,Y,Xedges,Yedges) 按照 XedgesYedges 指定的 bin 边界,将 XY 划分为多个 bin。

示例

[N,Xedges,Yedges] = histcounts2(___,Name,Value) 使用一个或多个名称-值参量为上述任一语法指定其他参量。例如,将 BinWidth 指定为一个二元素向量来调整每个维度中 bin 的宽度。

示例

[N,Xedges,Yedges,binX,binY] = histcounts2(___) 还返回 XY 中对应元素的 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

将 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

将 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

将 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

将介于 -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

输入参数

全部折叠

要分布到各 bin 的数据,指定为向量、矩阵或多维数组的单独参量。XY 的大小必须相同。

XY 中的对应元素指定二维数据点 [X(k),Y(k)] 的 x 和 y 坐标。XY 的数据类型可以不同。

histcounts2 忽略所有的 NaN 值。同样,histcounts2 忽略 Inf-Inf 值,除非 bin 边界将 Inf-Inf 显式指定为 bin 边界。

数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical

每个维度中的 bin 数量,指定为一个正整数标量或由正整数组成的二元素向量。

  • 如果 nbins 是标量,则 histcounts2 在每个维度中使用该标量所指定的 bin 数。

  • 如果 nbins 是向量,则第一个元素给出 x 维度中的 bin 数,第二个元素给出 y 维度中的 bin 数。

如果不指定 nbins,则 histcounts2 自动基于 XY 中的值计算要使用多少个 bin。

如果用 BinMethodBinWidth 指定 nbins,则 histcounts2 仅采用最后一个参数。

示例: [N,Xedges,Yedges] = histcounts2(X,Y,15)x 维度和 y 维度使用 15 个 bin。

示例: [N,Xedges,Yedges] = histcounts2(X,Y,[15 20])x 维度使用 15 个 bin,在 y 维度使用 20 个 bin。

x 维度中的 bin 边界,指定为向量。第一个元素指定 x 维度中第一个 bin 的左边界。最后一个元素指定 x 维度中的最后一个 bin 的右边界。仅最后一个 bin 包含右边界。

  • 如果用 BinMethodBinWidthNumBins 指定 XedgesYedgeshistcounts2 只采用 bin 边界且 bin 边界必须最后指定。

  • 如果用 XBinLimits 指定 Xedges,则 histcounts2 仅采用 XedgesXedges 必须最后指定。

y 维度中的 bin 边界,指定为向量。第一个元素指定 y 维度中第一个 bin 的左边界。最后一个元素指定 y 维度中的最后一个 bin 的右边界。仅最后一个 bin 包含右边界。

  • 如果用 BinMethodBinWidthNumBins 指定 YedgesXedgeshistcounts2 只采用 bin 边界且 bin 边界必须最后指定。

  • 如果用 YBinLimits 指定 Yedges,则 histcounts2 仅采用 YedgesYedges 必须最后指定。

名称-值参数

将可选的参量对组指定为 Name1=Value1,...,NameN=ValueN,其中 Name 是参量名称,Value 是对应的值。名称-值参量必须出现在其他参量之后,但参量对组的顺序无关紧要。

在 R2021a 之前,使用逗号分隔每个名称和值,并用引号将 Name 引起来。

示例: [N,Xedges,Yedges] = histcounts2(X,Y,'Normalization','probability')N 中的 bin 计数进行归一化,这样 sum(N) 为 1。

每个维度中的 bin 宽度,指定为由正值组成的二元素向量。第一个元素为 x 维度中的 bin 宽度,第二个元素为 y 维度中的 bin 宽度。

如果指定 BinWidth,则 histcounts2 可以沿每个维度使用最多 1024 (210) 个 bin。如果指定的 bin 宽度需要多个 bin,则 histcounts2 使用与最大 bin 数量对应的较大的 bin 宽度。

如果用 BinMethodNumBins 指定 BinWidth,则 histcounts2 仅采用最后一个参数。

示例: histcounts2(X,Y,'BinWidth',[5 10])x 维度使用的 bin 的大小为 5,在 y 维度使用的 bin 的大小为 10。

x 维度的 bin 范围,指定为二元素向量 [xbmin,xbmax]。第一个元素指示 x 维度中的第一个 bin 边界。第二个元素指示 x 维度中的最后一个 bin 边界。

此选项只对在 bin 范围 X>=xbmin & X<=xbmax(包含这两个边界值)内的数据分 bin。

y 维度的 bin 范围,指定为二元素向量 [ybmin,ybmax]。第一个元素指示 y 维度中的第一个 bin 边界。第二个元素指示 y 维度中的最后一个 bin 边界。

此选项只对在 bin 范围 Y>=ybmin & Y<=ybmax(包含这两个边界值)内的数据分 bin。

分 bin 算法,指定为此表中的一个值。

描述
'auto'

默认的 'auto' 算法选择一个 bin 宽度,以便涵盖数据范围并显示基础分布形状。

'scott'

如果数据接近联合正态分布,则 Scott 规则最佳。该规则也适用于大多数的其他分布。它使用 bin 大小 [3.5*std(X(:))*numel(X)^(-1/4), 3.5*std(Y(:))*numel(Y)^(-1/4)]

'fd'

Freedman-Diaconis 规则对数据中的离群值不太敏感,可能更适用于重尾分布的数据。它使用 bin 大小 [2*iqr(X(:))*numel(X)^(-1/4), 2*iqr(Y(:))*numel(Y)^(-1/4)]

'integers'

整数规则对整数数据有用,因为它创建以整数为中心的 bin。它对每个维度使用 bin 宽度 1 并将 bin 边界放在整数的中间。

为避免无意间创建太多 bin,可以使用此规则创建 1024 (210) 个 bin 的限制。如果任一维度的数据范围大于 1024,则整数规则改用更宽的 bin。

  • histcounts2 稍微调整 bin 的数目,使 bin 边界落在“合适”的数字上,而不是机械遵循这些精确的公式。

  • 如果设置 NumBinsXBinEdgesYBinEdgesBinWidthXBinLimitsYBinLimits 属性,则 BinMethod 设置为 'manual'

  • 如果用 BinWidthNumBins 指定 BinMethod,则 histcounts2 仅采用最后一个参数。

示例: histcounts2(X,Y,'BinMethod','integers') 以整数为中心放置二维 bin。

归一化类型,指定为此表中的一个值。对于每个 bin i

  • vi 是 bin 的值。

  • ci 是 bin 中的元素数目。

  • Ai=wxiwyi 是 bin 的面积,使用 bin 宽度 x 和 y 计算得出。

  • N 是输入数据中的元素数目。此值可以大于分 bin 数据元素数,前提是数据中包含缺失值,或者某些数据位于 bin 范围外。

bin 值注释
'count'(默认值)

vi=ci

  • 观测值的计数或频率。

  • bin 值之和最多为 numel(X)numel(y)。仅当某些输入数据不在 bin 中时,bin 值之和才会小于此值。

'probability'

vi=ciN

  • 相对概率。

  • 每个 bin 中的元素数与输入数据中的总元素数之比最大为 1。

'percentage'

vi=100*ciN

  • 相对百分比。

  • 每个 bin 中的元素百分比最多为 100。

'countdensity'

vi=ciAi

  • 按 bin 的面积进行换算的计数或频率。

  • N(end,end) 最多为 numel(X)numel(Y)

'cumcount'

vi=j=1icj

  • 累积计数,或在 x 和 y 两个维度上每个 bin 及前面所有 bin 中累积的观测值数量。

  • N(end,end) 最多为 numel(X)numel(Y)

'pdf'

vi=ciNAi

  • 概率密度函数的估计值。

  • bin 体积之和最多为 1

'cdf'

vi=j=1icjN

  • 累积分布函数估算值。

  • N(end,end) 最多为 1。

示例: histcounts2(X,Y,'Normalization','pdf') 使用概率密度函数估计值对数据进行分 bin。

输出参量

全部折叠

bin 计数,以数组形式返回。

不同编号的 bin 在 N 中的分布情况及其相对于 x 和 y 轴的方向如下图所示:

例如,bin (1,1) 包括位于每个维度中第一个边界上的值,右下角的最后一个 bin 包括位于其任何边界上的值。

x 维度的 bin 边界,以向量形式返回。第一个元素是 x 维度中第一个 bin 的左边界。最后一个元素是 x 维度中最后一个 bin 的右边界。

y 维度的 bin 边界,以向量形式返回。第一个元素是 y 维度中第一个 bin 的左边界。最后一个元素是 y 维度中最后一个 bin 的右边界。

x 维度中的 bin 索引,以数组形式返回,数组大小与 X 相同。binXbinY 中的对应元素说明哪个编号的 bin 包含 XY 中的对应值。binXbinY 中的 0 值表示元素不属于任何 bin(例如 NaN 值)。

例如,binX(1)binY(1) 描述值 [X(1),Y(1)] 的 bin 位置。

y 维度中的 bin 索引,以数组形式返回,数组大小与 Y 相同。binXbinY 中的对应元素说明哪个编号的 bin 包含 XY 中的对应值。binXbinY 中的 0 值表示元素不属于任何 bin(例如 NaN 值)。

例如,binX(1)binY(1) 描述值 [X(1),Y(1)] 的 bin 位置。

扩展功能

版本历史记录

在 R2015b 中推出

全部展开