mvnpdf
多変量正規分布の確率密度関数
説明
例
一連のランダムな点で、5 次元標準正規分布の pdf を評価します。
5 次元標準正規分布から 8 つの点を無作為に抽出します。
mu = zeros(1,5); Sigma = eye(5); rng('default') % For reproducibility X = mvnrnd(mu,Sigma,8)
X = 8×5
0.5377 3.5784 -0.1241 0.4889 -1.0689
1.8339 2.7694 1.4897 1.0347 -0.8095
-2.2588 -1.3499 1.4090 0.7269 -2.9443
0.8622 3.0349 1.4172 -0.3034 1.4384
0.3188 0.7254 0.6715 0.2939 0.3252
-1.3077 -0.0631 -1.2075 -0.7873 -0.7549
-0.4336 0.7147 0.7172 0.8884 1.3703
0.3426 -0.2050 1.6302 -1.1471 -1.7115
分布の pdf を X 内の点で評価します。
y = mvnpdf(X)
y = 8×1
0.0000
0.0000
0.0000
0.0000
0.0054
0.0011
0.0015
0.0003
pdf 値が最大である X 内の点を求めます。
[maxpdf,idx] = max(y)
maxpdf = 0.0054
idx = 5
maxPoint = X(idx,:)
maxPoint = 1×5
0.3188 0.7254 0.6715 0.2939 0.3252
X 内の 5 番目の点は、無作為に選択した他のどの点よりも pdf 値が大きくなっています。
それぞれ平均が異なる、6 つの 3 次元正規分布を作成します。複数の異なるランダムな点で、各分布の pdf を評価します。
分布の平均 mu と共分散 Sigma を指定します。各分布で共分散行列は同じ (単位行列) です。
firstDim = (1:6)'; mu = repmat(firstDim,1,3)
mu = 6×3
1 1 1
2 2 2
3 3 3
4 4 4
5 5 5
6 6 6
Sigma = eye(3)
Sigma = 3×3
1 0 0
0 1 0
0 0 1
6 つの分布それぞれから無作為に 1 回抽出します。
rng('default') % For reproducibility X = mvnrnd(mu,Sigma)
X = 6×3
1.5377 0.5664 1.7254
3.8339 2.3426 1.9369
0.7412 6.5784 3.7147
4.8622 6.7694 3.7950
5.3188 3.6501 4.8759
4.6923 9.0349 7.4897
分布の pdf を X 内の点で評価します。1 番目の分布の pdf は点 X(1,:) で、2 番目の分布の pdf は点 X(2,:) で評価されています。他についても同様です。
y = mvnpdf(X,mu)
y = 6×1
0.0384
0.0111
0.0000
0.0009
0.0241
0.0001
一連の与えられた点で、2 次元正規分布の pdf を評価します。
分布の平均 mu と共分散 Sigma を指定します。
mu = [1 -1]; Sigma = [0.9 0.4; 0.4 0.3];
分布から無作為に 100 回抽出します。抽出対象の点の行列として X を指定します。
rng('default') % For reproducibility X = mvnrnd(mu,Sigma,100);
分布の pdf を X 内の点で評価します。
y = mvnpdf(X,mu,Sigma);
確率密度値をプロットします。
scatter3(X(:,1),X(:,2),y) xlabel('X1') ylabel('X2') zlabel('Probability Density')

10 個の異なる 5 次元正規分布を作成し、指定した点における pdf の値を比較します。
次元 n および d をそれぞれ 10 および 5 に設定します。
n = 10; d = 5;
多変量正規分布の平均 mu と共分散 Sigma を指定します。すべての分布で同じ平均ベクトルを使用し、共分散行列は変化させます。
mu = ones(1,d)
mu = 1×5
1 1 1 1 1
mat = eye(d); nMat = repmat(mat,1,1,n); var = reshape(1:n,1,1,n); Sigma = nMat.*var;
Sigma 内の最初の 2 つの共分散行列を表示します。
Sigma(:,:,1:2)
ans =
ans(:,:,1) =
1 0 0 0 0
0 1 0 0 0
0 0 1 0 0
0 0 0 1 0
0 0 0 0 1
ans(:,:,2) =
2 0 0 0 0
0 2 0 0 0
0 0 2 0 0
0 0 0 2 0
0 0 0 0 2
5 次元空間におけるランダムな点を x に設定します。
rng('default') % For reproducibility x = normrnd(0,1,1,5)
x = 1×5
0.5377 1.8339 -2.2588 0.8622 0.3188
10 個の分布それぞれについて、x における pdf を評価します。
y = mvnpdf(x,mu,Sigma)
y = 10×1
10-4 ×
0.2490
0.8867
0.8755
0.7035
0.5438
0.4211
0.3305
0.2635
0.2134
0.1753
結果をプロットします。
scatter(1:n,y,'filled') xlabel('Distribution Index') ylabel('Probability Density at x')

入力引数
多変量正規分布の平均。1 行 d 列の数値ベクトルまたは n 行 d 列の数値行列を指定します。
muがベクトルである場合、mvnpdfはSigmaの最後の次元に一致するようにこのベクトルを複製します。muが行列である場合、muの各行は単一の多変量正規分布の平均ベクトルです。
データ型: single | double
多変量正規分布の共分散。d 行 d 列の対称な正定値行列または d x d x n の数値配列を指定します。
Sigmaが行列である場合、mvnpdfはmuの行数に一致するようにこの行列を複製します。Sigmaが配列である場合、Sigmaの各ページSigma(:,:,i)は単一の多変量正規分布の共分散行列です。したがって、対称な正定値行列になります。
共分散行列が対角行列であり、対角要素に分散が、非対角要素にゼロ共分散が格納されている場合、対角要素のみが格納されている 1 行 d 列のベクトルまたは 1 x d x n の配列を Sigma として指定することもできます。
データ型: single | double
出力引数
詳細
多変量正規分布は、一変量正規分布を 2 つ以上の変数に一般化したものです。平均ベクトル μ および共分散行列 Σ という 2 つのパラメーターがあり、これらは一変量正規分布の平均および分散パラメーターに類似しています。Σ の対角要素には各変数の分散が、Σ の非対角要素には変数間の共分散が格納されます。
d 次元多変量正規分布の確率密度関数 (pdf) は、次のようになります。
ここで、x と μ は 1 行 d 列のベクトル、Σ は d 行 d 列の対称な正定値行列です。mvnrnd のみが、(特異行列の可能性もある) 半正定値行列の Σ を受け入れます。Σ が特異行列である場合、pdf を同じ形式にすることはできません。
x で評価した多変量正規分布の累積分布関数 (cdf) は、多変量正規分布に従うランダムなベクトル v が、上限が次のように x によって定義される半無限の矩形に含まれる確率です。
多変量正規 cdf に閉形式はありませんが、mvncdf は cdf 値を数値的に計算できます。
ヒント
1 次元の場合、
Sigmaは標準偏差ではなく分散です。たとえば、mvnpdf(1,0,4)はnormpdf(1,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++ コードを生成します。
この関数は、GPU 配列を完全にサポートします。詳細は、GPU での MATLAB 関数の実行 (Parallel Computing Toolbox)を参照してください。
バージョン履歴
R2006a より前に導入
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- 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)