histcounts2
二変量ヒストグラムのビンのカウント数
構文
説明
[
は、N
,Xedges
,Yedges
] = histcounts2(X,Y
,Xedges
,Yedges
)Xedges
と Yedges
で指定されたビンのエッジを使用して、X
と Y
をビンに分割します。
N(i,j)
は、Xedges(i)
≤ X(k)
< Xedges(i+1)
かつ Yedges(j)
≤ Y(k)
< Yedges(j+1)
の場合に [X(k),Y(k)]
の値をカウントします。各次元の最後のビンは、最後 (外側) のエッジも含みます。たとえば、[X(k),Y(k)]
は、Xedges(end-1)
≤ X(k)
≤ Xedges(end)
かつ Yedges(i)
≤ Y(k)
< Yedges(i+1)
の場合に最後の行の i
番目のビンに分類されます。
[
は、前述の構文にある任意の入力引数を使用し、1 つ以上の N
,Xedges
,Yedges
] = histcounts2(___,Name,Value
)Name,Value
のペアの引数で指定される追加のオプションを使用します。たとえば、'BinWidth'
と 2 要素ベクトルを指定して、各次元のビンの幅を調整できます。
例
ビンのカウント数とビンのエッジ
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 個のビンに分配します。ビンを x 次元に 3 個、y 次元に 4 個指定します。
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 次元に 1 つずつ、計 2 つのベクトルでビンのエッジを定義します。各ベクトルの最初の要素は最初のビンの最初のエッジを指定し、最後の要素は最後のビンの最後のエッジを指定します。
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
ビン配置の判別
-10 ~ 10 の範囲にある 1,000 組の乱数の整数ペアをビンに分配します。BinMethod
を 'integers'
に指定して、整数を中心とする単位幅のビンを使用します。histcounts2
に出力を 5 つ指定して、データのビン配置を表すベクトルを返します。
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 次元データ点の x 座標および y 座標 [X(k),Y(k)]
を指定します。X
と Y
は異なるデータ型にすることができます。
histcounts2
はすべての NaN
値を無視します。同様にビンのエッジとして明示的に Inf
または -Inf
を指定しない限り、histcounts2
は Inf
値および -Inf
値を無視します。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| logical
nbins
— 各次元のビンの数
スカラー | ベクトル
各次元のビンの数。正のスカラー整数、あるいは正の整数の 2 要素ベクトルとして指定します。nbins
を指定しない場合、histcounts2
は X
および Y
の値に基づいて使用するビンの数を自動的に計算します。
nbins
がスカラーの場合、histcounts2
は各次元でその数のビンを使用します。nbins
がベクトルの場合、nbins(1)
は x 次元のビンの数、nbins(2)
は y 次元のビンの数を指定します。
例: [N,Xedges,Yedges] = histcounts2(X,Y,[15 20])
は x
次元で 15 個のビン、y
次元で 20 個のビンを使用します。
Xedges
— x 次元のビンのエッジ
ベクトル
x 次元のビンのエッジ。ベクトルとして指定します。Xedges(1)
は x 次元の最初のビンの最初のエッジであり、Xedges(end)
は最後のビンの外側のエッジです。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| logical
Yedges
— y 次元のビンのエッジ
ベクトル
y 次元のビンのエッジ。ベクトルとして指定します。Yedges(1)
は y 次元の最初のビンの最初のエッジであり、Yedges(end)
は最後のビンの外側のエッジです。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| logical
名前と値の引数
引数のオプションのペアを Name1=Value1,...,NameN=ValueN
として指定します。ここで Name
は引数名で、Value
は対応する値です。名前と値の引数は他の引数の後になければなりませんが、ペアの順序は重要ではありません。
R2021a より前では、コンマを使用してそれぞれの名前と値を区切り、Name
を引用符で囲みます。
例: [N,Xedges,Yedges] = histcounts2(X,Y,'Normalization','probability')
は、sum(N)
が 1 になるようにビンのカウント数を N
で正規化します。
BinMethod
— ビン化アルゴリズム
'auto'
(既定値) | 'scott'
| 'fd'
| 'integers'
ビン化アルゴリズム。次の表のいずれかの値を指定します。
値 | 説明 |
---|---|
'auto' | 既定値の |
'scott' | スコットの法則はデータが正規分布に近い場合に最適です。この規則は他の多くの分布にも適しています。ビンのサイズとして |
'fd' | Freedman-Diaconis の法則は、データの外れ値の影響を受けにくく、裾が大きい分布をもつデータにより適しています。ビンのサイズとして |
'integers' | 整数ルールは整数のペアを中心にしてビンを作成するので、整数データの場合に便利です。各次元に幅が 1 のビンを使用し、ビンのエッジを整数の中間に設定します。 誤って多すぎるビンを作成しないように、このルールを使用して作成するビンを 1024 (210) 個以下に制限できます。いずれかの次元のデータの範囲が 1024 よりも大きい場合、整数ルールは代わりに幅の広いビンを使用します。 |
histcounts2
は、これらの式を厳密に使用してビンの数を選択するとは限りません。場合によっては、ビンのエッジが "きりのよい" 数字になるように、ビンの数がわずかに調整されることがあります。
例: [N,Xedges,Yedges] = histcounts2(X,Y,'BinMethod','integers')
は各整数ペアを中心とする 2 次元のビンを使用します。
BinWidth
— 各次元のビンの幅
ベクトル
各次元のビンの幅。正の整数の 2 要素ベクトル [xWidth yWidth]
として指定します。
BinWidth
を指定した場合、histcounts2
は各次元で最大 1024 (210) 個のビンを使用できます。指定したビンの幅によってさらに多くのビンが必要となる場合、histcounts2
は最大のビン数に対応するより大きいビンの幅を使用します。
例: [N,Xedges,Yedges] = histcounts2(X,Y,'BinWidth',[5 10])
は x
次元のサイズが 5
、y
次元のサイズが 10
のビンを使用します。
XBinLimits
— x 次元のビンの範囲
2 要素ベクトル
x 次元のビンの範囲。2 要素ベクトル [xbmin,xbmax]
として指定します。このベクトルは、x 次元の最初と最後のビンのエッジを示します。
このオプションを使用すると、ビンの範囲 X>=xbmin & X<=xbmax
に含まれるデータのみがビンに入れられます。
YBinLimits
— y 次元のビンの範囲
2 要素ベクトル
y 次元のビンの範囲。2 要素ベクトル [ybmin,ybmax]
として指定します。このベクトルは、y 次元の最初と最後のビンのエッジを示します。
このオプションを使用すると、ビンの範囲 Y>=ybmin & Y<=ybmax
に含まれるデータのみがビンに入れられます。
Normalization
— 正規化のタイプ
'count'
(既定値) | 'probability'
| 'countdensity'
| 'pdf'
| 'cumcount'
| 'cdf'
正規化のタイプ。次の表のいずれかの値を指定します。各ビン i
に対して次のようになります。
はビンの値です。
はビン内の要素数です。
は各ビンの面積で、ビンの幅 x と y を使用して計算されます。
は入力データ内の要素数です。データに
NaN
値が含まれる場合、または一部のデータがビンの範囲外にある場合、この値はビン化されたデータより大きくなることがあります。
値 | ビンの値 | メモ |
---|---|---|
'count' (既定) |
|
|
'countdensity' |
|
|
'cumcount' |
|
|
'probability' |
|
|
'pdf' |
|
|
'cdf' |
|
|
例: [N,Xedges,Yedges] = histcounts2(X,Y,'Normalization','pdf')
は確率密度関数の推定値を X
と Y
に使用してデータをビンに入れます。
出力引数
N
— ビンのカウント数
配列
ビンのカウント数。数値配列として返されます。
N
の異なる番号をもつビンに対するビン包含スキームと、ビンの x 軸および y 軸に対する相対方向は次のとおりです。
たとえば、(1,1)
のビンは各次元の最初のエッジ上にある値を含み、右下の最後のビンはその任意のエッジ上にある値をすべて含みます。
Xedges
— x 次元のビンのエッジ
ベクトル
x 次元のビンのエッジ。ベクトルとして返されます。Xedges(1)
は x 次元の最初のビンのエッジであり、Xedges(end)
は最後のビンのエッジです。
Yedges
— y 次元のビンのエッジ
ベクトル
y 次元のビンのエッジ。ベクトルとして返されます。Yedges(1)
は y 次元の最初のビンのエッジであり、Yedges(end)
は最後のビンのエッジです。
binX
— x 次元のビン インデックス
配列
x 次元のビン インデックス。X
と同じサイズの数値配列として返されます。binX
および binY
の対応する要素は、X
および Y
の対応する値を含む番号付きビンを表します。binX
または binY
に値 0
が含まれる場合、これは要素がいずれのビンにも属さないことを示します (NaN
値など)。
たとえば、binX(1)
および binY(1)
は値 [X(1),Y(1)]
のビンの位置を表します。
binY
— y 次元のビン インデックス
配列
y 次元のビン インデックス。Y
と同じサイズの数値配列として返されます。binX
および binY
の対応する要素は、X
および Y
の対応する値を含む番号付きビンを表します。binX
または binY
に値 0
が含まれる場合、これは要素がいずれのビンにも属さないことを示します (NaN
値など)。
たとえば、binX(1)
および binY(1)
は値 [X(1),Y(1)]
のビンの位置を表します。
拡張機能
C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。
使用上の注意事項および制限事項:
コード生成では、この関数のスパース行列入力はサポートされません。
ビンのエッジを指定しない場合、コード生成で可変サイズ配列および動的メモリ割り当てが必要になることがあります。
スレッドベースの環境
MATLAB® backgroundPool
を使用してバックグラウンドでコードを実行するか、Parallel Computing Toolbox™ のThreadPool
を使用してコードを高速化します。
この関数はスレッドベースの環境を完全にサポートしています。詳細については、Run MATLAB Functions in Thread-Based Environmentを参照してください。
バージョン履歴
参考
histogram
| histcounts
| discretize
| histogram2
| morebins
| fewerbins
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)