exponenta event banner

histcounts2

Двухмерные счетчики Bivariate histogram bin

Описание

пример

[N,Xedges,Yedges] = histcounts2(X,Y) секционирует значения в X и Y в 2-D ячейки и возвращает количество ячеек, а также кромки ячеек в каждом измерении. histcounts2 функция использует алгоритм автоматического объединения, который возвращает однородные ячейки, выбранные для охвата диапазона значений в X и Y и раскрыть основную форму распределения.

пример

[N,Xedges,Yedges] = histcounts2(X,Y,nbins) определяет количество ячеек для использования в каждом измерении.

пример

[N,Xedges,Yedges] = histcounts2(X,Y,Xedges,Yedges) разделение X и Y в ячейки с кромками ячеек, указанными Xedges и Yedges.

N(i,j) подсчитывает значение [X(k),Y(k)] если Xedges(i)X(k) < Xedges(i+1) и Yedges(j)Y(k) < Yedges(j+1). Последние ячейки в каждом измерении также включают последнее (внешнее) ребро. Например, [X(k),Y(k)] попадает в ith bin в последней строке, если Xedges(end-1)X(k)Xedges(end) и Yedges(i)Y(k) < Yedges(i+1).

пример

[N,Xedges,Yedges] = histcounts2(___,Name,Value) использует дополнительные параметры, указанные одним или несколькими Name,Value пара аргументов с использованием любого из входных аргументов в предыдущих синтаксисах. Например, можно указать 'BinWidth' и двухэлементный вектор для регулировки ширины ячеек в каждом измерении.

пример

[N,Xedges,Yedges,binX,binY] = histcounts2(___) также возвращает массивы индексов binX и binY, используя любой из предыдущих синтаксисов. binX и binY массивы того же размера, что и X и Y чьи элементы являются индексами ячейки для соответствующих элементов в X и Y. Количество элементов в (i,j)th bin равен nnz(binX==i & binY==j), что является тем же, что и N(i,j) если Normalization является 'count'.

Примеры

свернуть все

Распределите 100 пар случайных чисел по ячейкам. histcounts2 автоматически выбирает соответствующую ширину ячейки, чтобы показать нижележащее распределение данных.

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 ячеек. Укажите 3 ячейки в X-измерении и 4 ячейки в Y-измерении.

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

Распределите 1000 пар случайных чисел по ячейкам. Определите ребра ячейки с двумя векторами: по одному для размеров x и y. Первый элемент в каждом векторе определяет первую кромку первой ячейки, а последний элемент является последней кромкой последней ячейки.

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

Распределите 1000 пар случайных чисел по ячейкам. Определить Normalization как 'probability' нормализовать количество ячеек таким образом, чтобы sum(N(:)) является 1. То есть, каждое число ячеек представляет вероятность того, что наблюдение попадает в эту ячейку.

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

Распределите 1000 случайных целых пар между -10 и 10 в ячейки и укажите BinMethod как 'integers' для использования ячеек единичной ширины с центром на целых числах. Укажите пять выходов для histcounts2 для возврата векторов, представляющих размещение данных в ячейке.

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)) попадает в.

[x(3),y(3)]
ans = 1×2

    -8    10

bin = [binX(3) binY(3)]
bin = 1×2

     3    21

Входные аргументы

свернуть все

Данные для распределения между ячейками, заданными как отдельные аргументы векторов, матриц или многомерных массивов. X и Y должен иметь одинаковый размер.

Соответствующие элементы в X и Y укажите координаты x и y точек данных 2-D, [X(k),Y(k)]. Типы данных X и Y может быть разным.

histcounts2 игнорирует все NaN значения. Аналогично, histcounts2 игнорирует Inf и -Inf значения, за исключением случаев явного указания ребер ячейки Inf или -Inf как ребро ячейки.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical

Число ячеек в каждом измерении, указанное как положительное скалярное целое число или двухэлементный вектор положительных целых чисел. Если не указать nbins, то histcounts2 автоматически вычисляет количество используемых ячеек на основе значений в X и Y:

  • Если nbins является скаляром, то histcounts2 использует столько ячеек в каждом измерении.

  • Если nbins является вектором, то nbins(1) определяет количество ячеек в X-измерении и nbins(2) определяет количество ячеек в измерении Y.

Пример: [N,Xedges,Yedges] = histcounts2(X,Y,[15 20]) использует 15 ячеек в x- размер и 20 ячеек в y-размерность.

Ребра ячейки в X-размере, заданные как вектор. Xedges(1) является первой кромкой первой ячейки в x-измерении, и Xedges(end) является внешним краем последнего бункера.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical

Ребра ячейки в размере y, заданные как вектор. Yedges(1) является первым краем первого бункера в измерении y, и Yedges(end) является внешним краем последнего бункера.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical

Аргументы пары «имя-значение»

Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.

Пример: [N,Xedges,Yedges] = histcounts2(X,Y,'Normalization','probability') нормализует количество ячеек в N, такой, что sum(N) равно 1.

Алгоритм объединения, указанный как одно из значений в этой таблице.

СтоимостьОписание
'auto'

Дефолт 'auto' алгоритм выбирает ширину ячейки для охвата диапазона данных и выявления формы нижележащего распределения.

'scott'

Правило Скотта оптимально, если данные близки к совместному нормальному распределению. Это правило также подходит для большинства других распределений. Он использует размер ячейки, равный [3.5*std(X(:))*numel(X)^(-1/4), 3.5*std(Y(:))*numel(Y)^(-1/4)].

'fd'

Правило Freedman-Diaconis менее чувствительно к отклонениям в данных и может быть более подходящим для данных с тяжелохвостыми распределениями. Он использует размер ячейки, равный [2*IQR(X(:))*numel(X)^(-1/4), 2*IQR(Y(:))*numel(Y)^(-1/4)], где IQR - межквартильный диапазон.

'integers'

Целочисленное правило полезно с целочисленными данными, поскольку оно создает ячейки с центром на парах целых чисел. Он использует ширину ячейки 1 для каждого размера и размещает кромки ячейки на полпути между целыми числами.

Чтобы избежать случайного создания слишком большого количества ячеек, можно использовать это правило для создания ограничения 1024 ячеек (210). Если диапазон данных для любого измерения больше 1024, то в целочисленном правиле вместо этого используются более широкие ячейки.

histcounts2 не всегда выбирает количество ячеек по этим точным формулам. Иногда количество ячеек немного регулируется так, что края ячеек попадают на «хорошие» числа.

Пример: [N,Xedges,Yedges] = histcounts2(X,Y,'BinMethod','integers') использует ячейки 2-D, центрированные на каждой паре целых чисел.

Ширина ячеек в каждом измерении, заданная как двухэлементный вектор положительных целых чисел, [xWidth yWidth].

При указании BinWidth, то histcounts2 может использовать не более 1024 ячеек (210) вдоль каждого размера. Если для указанной ширины ячейки требуется больше ячеек, то histcounts2 использует большую ширину ячейки, соответствующую максимальному количеству ячеек.

Пример: [N,Xedges,Yedges] = histcounts2(X,Y,'BinWidth',[5 10]) использует ячейки с размером 5 в x-размерность и размер 10 в y-размерность.

Пределы ячейки в x-размерности, заданные как двухэлементный вектор, [xbmin,xbmax]. Вектор указывает первую и последнюю кромки ячейки в измерении X.

Эта опция содержит только те данные ячеек, которые находятся в пределах границ ячеек включительно, X>=xbmin & X<=xbmax.

Bin limits in y-dimension, задается как двухэлементный вектор, [ybmin,ybmax]. Вектор указывает первую и последнюю кромки ячейки в измерении Y.

Эта опция содержит только те данные ячеек, которые находятся в пределах границ ячеек включительно, Y>=ybmin & Y<=ybmax.

Тип нормализации, указанный как одно из значений в этой таблице. Для каждой ячейки i:

  • vi - значение ячейки.

  • ci - количество элементов в ячейке.

  • Ai=wxi⋅wyi - площадь каждого элемента, вычисленная с использованием ширины элемента x и y.

  • N - количество элементов во входных данных. Это значение может быть больше, чем привязанные данные, если данные содержат NaN значения или, если часть данных находится за пределами ячейки.

СтоимостьЗначения ячейкиПримечания
'count' (по умолчанию)

vi = ci

  • Количество или частота наблюдений.

  • Сумма значений ячейки меньше или равна numel(X) и numel(y). Сумма меньше numel(X) только в том случае, если часть входных данных не включена в ячейки.

'countdensity'

vi = ciAi

  • Число или частота, масштабированные по площади ячейки.

  • Сумма объемов ячейки (значение N * площадь ячейки) меньше или равна numel(X) и numel(Y).

'cumcount'

vi=∑j=1icj

  • Кумулятивный подсчет. Каждое значение ячейки - это совокупное количество наблюдений в каждой ячейке и во всех предыдущих ячейках в измерениях x и y.

  • N(end,end) меньше или равно numel(X) и numel(Y).

'probability'

vi = ciN

  • Относительная вероятность.

  • sum(N(:)) меньше или равно 1.

'pdf'

vi=ciN⋅Ai

  • Оценка функции плотности вероятности.

  • Сумма объемов ячейки (значение N * площадь ячейки) меньше или равна 1.

'cdf'

vi=∑j=1i cjN

  • Оценка кумулятивной функции плотности.

  • N(end,end) меньше или равно 1.

Пример: [N,Xedges,Yedges] = histcounts2(X,Y,'Normalization','pdf') складывает данные, используя оценку функции плотности вероятности для X и Y.

Выходные аргументы

свернуть все

Количество ячеек, возвращаемое в виде числового массива.

Схема включения ячеек для различных пронумерованных ячеек в N, а также их относительная ориентация по осям X и Y

Например, (1,1) ячейка содержит значения, которые попадают на первое ребро в каждом измерении, а последняя ячейка в нижнем правом - на любое из его ребер.

Ребра ячейки в x-размерности, возвращаемые как вектор. Xedges(1) является первым ребром ячейки в x-измерении и Xedges(end) является последним краем ячейки.

Ребра ячейки в размерности y, возвращаемые как вектор. Yedges(1) является первым ребром ячейки в y-измерении и Yedges(end) является последним краем ячейки.

Индекс ячейки в x-измерении, возвращаемый в виде числового массива того же размера, что и X. Соответствующие элементы в binX и binY опишите, какая пронумерованная ячейка содержит соответствующие значения в X и Y. Значение 0 в binX или binY указывает элемент, который не принадлежит ни одному из ячеек (например, NaN значение).

Например, binX(1) и binY(1) опишите размещение ячейки для значения [X(1),Y(1)].

Индекс ячейки в измерении y, возвращаемый в виде числового массива того же размера, что и Y. Соответствующие элементы в binX и binY опишите, какая пронумерованная ячейка содержит соответствующие значения в X и Y. Значение 0 в binX или binY указывает элемент, который не принадлежит ни одному из ячеек (например, NaN значение).

Например, binX(1) и binY(1) опишите размещение ячейки для значения [X(1),Y(1)].

Расширенные возможности

.
Представлен в R2015b