mvnpdf
다변량 정규 확률 밀도 함수
설명
예제
표준 다변량 정규 pdf
임의의 점 집합에서 표준 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
X
에 있는 점에서 분포의 pdf를 계산합니다.
y = mvnpdf(X)
y = 8×1
0.0000
0.0000
0.0000
0.0000
0.0054
0.0011
0.0015
0.0003
X
에서 가장 큰 pdf 값을 갖는 점을 찾습니다.
[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
의 다섯 번째 점이 무작위로 선택된 점 중에서 가장 큰 pdf 값을 갖습니다.
서로 다른 점에서 계산한 다변량 정규 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개의 분포에서 각각 한 번씩 무작위로 추출합니다.
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
X
에 있는 점에서 분포의 pdf를 계산합니다. 첫 번째 분포의 pdf는 점 X(1,:)
에서 계산되고, 두 번째 분포의 pdf는 점 X(2,:)
에서 계산되는 식입니다.
y = mvnpdf(X,mu)
y = 6×1
0.0384
0.0111
0.0000
0.0009
0.0241
0.0001
다변량 정규 pdf
주어진 점 집합에서 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);
X
에 있는 점에서 분포의 pdf를 계산합니다.
y = mvnpdf(X,mu,Sigma);
확률 밀도 값을 플로팅합니다.
scatter3(X(:,1),X(:,2),y) xlabel('X1') ylabel('X2') zlabel('Probability Density')
동일한 점에서 계산한 다변량 정규 pdf
10개의 서로 다른 5차원 정규분포를 만들고, 지정된 점에서 각 pdf의 값을 비교합니다.
차원 n
을 10으로 지정하고 d
를 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
에 있는 처음 두 개의 공분산 행렬을 표시합니다.
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
x
가 5차원 공간에 있는 임의의 점이 되도록 설정합니다.
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')
입력 인수
mu
— 다변량 정규분포의 평균
0으로 구성된 벡터 (디폴트 값) | 숫자형 벡터 | 숫자형 행렬
다변량 정규분포의 평균으로, 1
×d 숫자형 벡터 또는 n×d 숫자형 행렬로 지정됩니다.
mu
가 벡터이면mvnpdf
는Sigma
의 후행 차원과 일치하도록 벡터를 복제합니다.mu
가 행렬이면mu
의 각 행은 하나의 다변량 정규분포의 평균으로 구성된 벡터입니다.
데이터형: single
| double
Sigma
— 다변량 정규분포의 공분산
단위 행렬 (디폴트 값) | 양의 정부호 대칭 행렬 | 숫자형 배열
다변량 정규분포의 공분산으로, d×d 양의 정부호 대칭 행렬 또는 d×d×n 숫자형 배열로 지정됩니다.
Sigma
가 행렬이면mvnpdf
는mu
의 행 개수와 일치하도록 행렬을 복제합니다.Sigma
가 배열이면Sigma
의 각 페이지Sigma(:,:,i)
는 하나의 다변량 정규분포의 공분산 행렬이고, 따라서 양의 정부호 대칭 행렬입니다.
공분산 행렬이 대각 행렬이고 대각선 을 따라 분산을 포함하고 있고 대각선 밖에는 공분산 0을 포함하고 있다면, Sigma
를 대각선 요소만 포함하는 1
×d 벡터 또는 1
×d×n 배열로 지정할 수도 있습니다.
데이터형: single
| double
출력 인수
세부 정보
다변량 정규분포
다변량 정규분포는 일변량 정규분포를 둘 이상의 변수로 일반화한 것입니다. 다변량 정규분포는 두 개의 모수, 평균 벡터 μ와 공분산 행렬 Σ를 갖습니다. 이는 일변량 정규분포의 모수인 평균, 분산과 비슷합니다. Σ의 대각선 요소는 각 변수에 대한 분산을 포함하고, Σ의 비대각선 요소는 변수 간 공분산을 포함합니다.
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 배열
Parallel Computing Toolbox™를 사용해 GPU(그래픽스 처리 장치)에서 실행하여 코드 실행 속도를 높일 수 있습니다.
이 함수는 GPU 배열을 완전히 지원합니다. 자세한 내용은 GPU에서 MATLAB 함수 실행하기 (Parallel Computing Toolbox) 항목을 참조하십시오.
버전 내역
R2006a 이전에 개발됨
MATLAB 명령
다음 MATLAB 명령에 해당하는 링크를 클릭했습니다.
명령을 실행하려면 MATLAB 명령 창에 입력하십시오. 웹 브라우저는 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)