Main Content

random

混合ガウス分布による確率変量

説明

Y = random(gm) は、m 次元の混合ガウス分布 gm から 1 行 m 列の確率変量を生成します。

Y = random(gm,n) は、n 個の確率変量を返します。Y の各行は、m 次元の混合ガウス分布 gm から生成された確率変量です。

[Y,compIdx] = random(___) は、前の構文のいずれかの入力引数について、n 行 1 列のインデックス ベクトル compIdx も返します。compIdx(i) は、i 番目の確率変量 Y(i,:) を生成するために使用された混合成分を示します。

すべて折りたたむ

gmdistribution オブジェクトを作成し、確率変量を生成します。

2 成分の二変量混合ガウス分布の分布パラメーター (平均と共分散) を定義します。

mu = [1 2;-3 -5];
sigma = [1 1]; % shared diagonal covariance matrix

関数 gmdistribution を使用して gmdistribution オブジェクトを作成します。既定では、この関数は等比率の混合を作成します。

gm = gmdistribution(mu,sigma)
gm = 

Gaussian mixture distribution with 2 components in 2 dimensions
Component 1:
Mixing proportion: 0.500000
Mean:     1     2

Component 2:
Mixing proportion: 0.500000
Mean:    -3    -5

1000 個の確率変量を生成します。

rng('default'); % For reproducibility
[Y,compIdx] = random(gm,1000);

compIdx(i) は、i 番目の確率変量 Y(i,:) を生成するために使用された混合成分を示します。Component 1 によって生成された確率変量の個数をカウントします。

numIdx1 = sum(compIdx == 1)
numIdx1 = 512

gm は混合比率が均等なので、random は約半分の確率変量の生成に Component 1 を使用します。

scatter を使用して、生成された確率変量をプロットします。

scatter(Y(:,1),Y(:,2),10,'.') % Scatter plot with points of size 10

Figure contains an axes object. The axes object contains an object of type scatter.

乱数発生器をリセットして、同じ確率変量を生成します。

2 つの二変量混合ガウス成分の分布パラメーター (平均、共分散および混合比率) を定義します。

p = [0.4 0.6];               % Mixing proportions     
mu = [1 2;-3 -5];            % Means
sigma = cat(3,[2 .5],[1 1])  % Covariances 1-by-2-by-2 array
sigma = 
sigma(:,:,1) =

    2.0000    0.5000


sigma(:,:,2) =

     1     1

関数 cat は、3 番目の配列次元に沿って共分散を連結します。定義される共分散行列は対角行列です。sigma(1,:,i) には成分 i の共分散行列の対角要素が格納されます。

関数 gmdistribution を使用して gmdistribution オブジェクトを作成します。

gm = gmdistribution(mu,sigma);

現在の乱数発生器の状態を保存してから、gm を使用して確率変量を生成します。

s = rng;
r = random(gm)
r = 1×2

   -1.1661   -7.2588

乱数発生器の状態を s に戻してから、gm を使用して確率変量を生成します。前と同じ値になります。

rng(s);
r1 = random(gm)
r1 = 1×2

   -1.1661   -7.2588

入力引数

すべて折りたたむ

混合ガウス分布。混合ガウス モデル (GMM) とも呼ばれます。gmdistribution オブジェクトを指定します。

gmdistribution オブジェクトは、gmdistribution または fitgmdist を使用して作成できます。分布パラメーターを指定して gmdistribution オブジェクトを作成するには、関数 gmdistribution を使用します。固定数の成分に対して gmdistribution モデルをデータに当てはめるには、関数 fitgmdist を使用します。

生成する確率変量の個数。正の整数を指定します。

データ型: single | double

出力引数

すべて折りたたむ

確率変量。1 行 m 列の数値ベクトルまたは n 行 m 列の数値行列として返されます。Y の各行は、m 次元の混合ガウス分布 gm から生成された確率変量です。

成分のインデックス。正の整数または n 行 1 列のインデックス ベクトルとして返されます。compIdx(i) は、i 番目の確率変量 Y(i,:) を生成するために使用された混合成分を示します。

バージョン履歴

R2007b で導入