histcounts2

Двухмерные количества интервалов гистограммы

Описание

пример

[N,Xedges,Yedges] = histcounts2(X,Y) разделяет значения на X и Y в 2-D интервалы, и возвращает количества интервалов, а также границы интервала в каждой размерности. The 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 координаты 2D данных точек, [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'

Правило Фридмена—Диакониса менее чувствительно к выбросам в данных и может быть более подходящим для данных с тяжелохвостыми распределениями. В нем используется интервал размером [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.

Пределы интервала в y -размерности, заданные как двухэлементный вектор, [ybmin,ybmax]. Вектор указывает первые и последние границы интервала в y -размерности.

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

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

  • vi - значение интервала.

  • ci количество элементов в интервале.

  • Ai=wxiwyi - площадь каждого интервала, вычисленная с помощью 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=ciNAi

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

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

'cdf'

vi=j=1icjN

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

  • 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