Main Content

mvnrnd

多変量正規分布の乱数

説明

R = mvnrnd(mu,Sigma,n) は、平均ベクトル mu および共分散行列 Sigma をもつ同じ多変量正規分布から選択した n 個の乱数ベクトルが格納されている行列 R を返します。詳細は、多変量正規分布を参照してください。

R = mvnrnd(mu,Sigma) は、mu で指定された平均および Sigma で指定された共分散をもつ m 個の独立した d 次元多変量正規分布から抽出した乱数ベクトルが格納されている m 行 d 列の行列 R を返します。R の各行は、単一の多変量正規乱数ベクトルです。

すべて折りたたむ

同じ多変量正規分布から乱数を生成します。

muSigma を定義し、100 個の乱数を生成します。

mu = [2 3];
Sigma = [1 1.5; 1.5 3];
rng('default')  % For reproducibility
R = mvnrnd(mu,Sigma,100);

乱数をプロットします。

plot(R(:,1),R(:,2),'+')

Figure contains an axes object. The axes contains a line object which displays its values using only markers.

5 つの異なる 3 次元正規分布から無作為に抽出します。

分布の平均 mu と共分散 Sigma を指定します。すべての分布で同じ共分散行列を使用し、平均ベクトルは変化させます。

firstDim = (1:5)';
mu = repmat(firstDim,1,3)
mu = 5×3

     1     1     1
     2     2     2
     3     3     3
     4     4     4
     5     5     5

Sigma = eye(3)
Sigma = 3×3

     1     0     0
     0     1     0
     0     0     1

5 つの分布それぞれから無作為に 1 回抽出します。

rng('default')  % For reproducibility
R = mvnrnd(mu,Sigma)
R = 5×3

    1.5377   -0.3077   -0.3499
    3.8339    1.5664    5.0349
    0.7412    3.3426    3.7254
    4.8622    7.5784    3.9369
    5.3188    7.7694    5.7147

結果をプロットします。

scatter3(R(:,1),R(:,2),R(:,3))

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

入力引数

すべて折りたたむ

多変量正規分布の平均。1 行 d 列の数値ベクトルまたは m 行 d 列の数値行列を指定します。

  • mu がベクトルである場合、mvnrndSigma の最後の次元に一致するようにこのベクトルを複製します。

  • mu が行列である場合、mu の各行は単一の多変量正規分布の平均ベクトルです。

データ型: single | double

多変量正規分布の共分散。d 行 d 列の対称な半正定値行列または d x d x m の数値配列を指定します。

  • Sigma が行列である場合、mvnrndmu の行数に一致するようにこの行列を複製します。

  • Sigma が配列である場合、Sigma の各ページ Sigma(:,:,i) は単一の多変量正規分布の共分散行列です。したがって、対称な半正定値行列になります。

共分散行列が対角行列であり、対角要素に分散が、非対角要素にゼロ共分散が格納されている場合、対角要素のみが格納されている 1 行 d 列のベクトルまたは 1 x d x m の配列を Sigma として指定することもできます。

データ型: single | double

多変量乱数の個数。正の整数スカラーを指定します。n は、R の行数を指定します。

データ型: single | double

出力引数

すべて折りたたむ

多変量正規乱数。次のいずれかとして返されます。

  • m 行 d 列の数値行列。m と d は、mu および Sigma で指定された次元です。

  • n 行 d 列の数値行列。n は指定された入力引数、d は mu および Sigma で指定された次元です。

mu が行列、Sigma が配列である場合、mvnrndmu(i,:)Sigma(:,:,i) を使用して R(i,:) を計算します。

詳細

すべて折りたたむ

多変量正規分布

多変量正規分布は、一変量正規分布を 2 つ以上の変数に一般化したものです。平均ベクトル μ および共分散行列 Σ という 2 つのパラメーターがあり、これらは一変量正規分布の平均および分散パラメーターに類似しています。Σ の対角要素には各変数の分散が、Σ の非対角要素には変数間の共分散が格納されます。

d 次元多変量正規分布の確率密度関数 (pdf) は、次のようになります。

y = f(x,μ,Σ) = 1|Σ|(2π)dexp(12(x-μΣ-1(x-μ)')

ここで、x と μ は 1 行 d 列のベクトル、Σ は d 行 d 列の対称な正定値行列です。mvnrnd のみが、(特異行列の可能性もある) 半正定値行列の Σ を受け入れます。Σ が特異行列である場合、pdf を同じ形式にすることはできません。

x で評価した多変量正規分布の累積分布関数 (cdf) は、多変量正規分布に従うランダムなベクトル v が、上限が次のように x によって定義される半無限の矩形に含まれる確率です。

Pr{v(1)x(1),v(2)x(2),...,v(d)x(d)}.

多変量正規 cdf に閉形式はありませんが、mvncdf は cdf 値を数値的に計算できます。

ヒント

  • mvnrnd では、行列 Sigma が対称行列でなければなりません。Sigma の非対称性がわずかである場合、代わりに (Sigma + Sigma')/2 を使用して非対称性を解決することができます。

  • 1 次元の場合、Sigma は標準偏差ではなく分散です。たとえば、mvnrnd(0,4)normrnd(0,2) と同じであり、4 は分散、2 は標準偏差です。

参照

[1] Kotz, S., N. Balakrishnan, and N. L. Johnson. Continuous Multivariate Distributions: Volume 1: Models and Applications. 2nd ed. New York: John Wiley & Sons, Inc., 2000.

拡張機能

C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。

バージョン履歴

R2006a より前に導入