# histcounts2

## 语法

``[N,Xedges,Yedges] = histcounts2(X,Y)``
``[N,Xedges,Yedges] = histcounts2(X,Y,nbins)``
``[N,Xedges,Yedges] = histcounts2(X,Y,Xedges,Yedges)``
``[N,Xedges,Yedges] = histcounts2(___,Name,Value)``
``[N,Xedges,Yedges,binX,binY] = histcounts2(___)``

## 说明

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

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

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

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

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

```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 ```

```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 ```

```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 ```

```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)]`
```ans = 1×2 -8 10 ```
`bin = [binX(3) binY(3)]`
```bin = 1×2 3 21 ```

## 输入参数

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

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

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

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

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

• 如果用 `BinMethod``BinWidth``NumBins` 指定 `Xedges``Yedges``histcounts2` 只采用 bin 边界且 bin 边界必须最后指定。

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

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

• 如果用 `BinMethod``BinWidth``NumBins` 指定 `Yedges``Xedges``histcounts2` 只采用 bin 边界且 bin 边界必须最后指定。

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

### 名称-值参数

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

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

`'auto'`

`'scott'`

`'fd'`

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

`'integers'`

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

• 如果设置 `NumBins``XBinEdges``YBinEdges``BinWidth``XBinLimits``YBinLimits` 属性，则 `BinMethod` 设置为 `'manual'`

• 如果用 `BinWidth``NumBins` 指定 `BinMethod`，则 `histcounts2` 仅采用最后一个参数。

• ${v}_{i}$ 是 bin 的值。

• ${c}_{i}$ 是 bin 中的元素数目。

• ${A}_{i}={w}_{xi}\cdot {w}_{yi}$ 是 bin 的面积，使用 bin 宽度 x 和 y 计算得出。

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

bin 值注释
`'count'`（默认值）

`${v}_{i}={c}_{i}$`

• 观测值的计数或频率。

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

`'probability'`

`${v}_{i}=\frac{{c}_{i}}{N}$`

• 相对概率。

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

`'percentage'`

`${v}_{i}=100*\frac{{c}_{i}}{N}$`

• 相对百分比。

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

`'countdensity'`

`${v}_{i}=\frac{{c}_{i}}{{A}_{i}}$`

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

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

`'cumcount'`

`${v}_{i}=\sum _{j=1}^{i}{c}_{j}$`

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

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

`'pdf'`

`${v}_{i}=\frac{{c}_{i}}{N\cdot {A}_{i}}$`

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

• bin 体积之和最多为 `1`

`'cdf'`

`${v}_{i}=\sum _{j=1}^{i}\text{\hspace{0.17em}}\frac{{c}_{j}}{N}$`

• 累积分布函数估算值。

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

## 输出参量

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

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

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

x 维度中的 bin 索引，以数组形式返回，数组大小与 `X` 相同。`binX``binY` 中的对应元素说明哪个编号的 bin 包含 `X``Y` 中的对应值。`binX``binY` 中的 `0` 值表示元素不属于任何 bin（例如 `NaN` 值）。

y 维度中的 bin 索引，以数组形式返回，数组大小与 `Y` 相同。`binX``binY` 中的对应元素说明哪个编号的 bin 包含 `X``Y` 中的对应值。`binX``binY` 中的 `0` 值表示元素不属于任何 bin（例如 `NaN` 值）。