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 в 2D интервалы, и возвращает количества интервала, а также ребра интервала в каждой размерности. Функция 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)] попадает в i th интервал в последней строке если 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 интервал равно 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

Распределите 1 000 пар случайных чисел в интервалы. Задайте ребра интервала с двумя векторами: один каждый для размерностей 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

Распределите 1 000 пар случайных чисел в интервалы. Задайте 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

Распределите 1 000 случайных целочисленных пар между-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 | логический

Количество интервалов в каждой размерности, заданной как положительное скалярное целое число или двухэлементный вектор положительных целых чисел. Если вы не задаете 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 | логический

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

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | логический

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

Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми. Имя (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 для каждой размерности и помещает ребра интервала на полпути между целыми числами.

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

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

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

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

Если вы задаете BinWidth, то histcounts2 может использовать максимум 1 024 интервалов (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