Main Content

mvnrnd

다변량 정규분포 난수

설명

R = mvnrnd(mu,Sigma,n)은 평균 벡터 mu 및 공분산 행렬 Sigma를 갖는 동일한 다변량 정규분포에서 선택한 n개의 확률 벡터로 구성된 행렬 R을 반환합니다. 자세한 내용은 다변량 정규분포 항목을 참조하십시오.

예제

R = mvnrnd(mu,Sigma)는 평균과 공분산이 각각 muSigma로 지정된 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개의 분포에서 각각 한 번씩 무작위로 추출합니다.

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×d×m 숫자형 배열로 지정됩니다.

  • Sigma가 행렬이면 mvnrndmu의 행 개수와 일치하도록 행렬을 복제합니다.

  • Sigma가 배열이면 Sigma의 각 페이지 Sigma(:,:,i)는 하나의 다변량 정규분포의 공분산 행렬이고, 따라서 양의 준정부호 대칭 행렬입니다.

공분산 행렬이 대각 행렬이고 대각선 을 따라 분산을 포함하고 있고 대각선 밖에는 공분산 0을 포함하고 있다면, Sigma를 대각선 요소만 포함하는 1×d 벡터 또는 1×d×m 배열로 지정할 수도 있습니다.

데이터형: single | double

다변량 난수의 개수로, 양의 정수 스칼라로 지정됩니다. nR의 행 개수를 지정합니다.

데이터형: single | double

출력 인수

모두 축소

다변량 정규분포 난수로, 다음 중 하나로 반환됩니다.

  • m×d 숫자형 행렬. 여기서 mdmuSigma로 지정된 차원입니다.

  • n×d 숫자형 행렬. 여기서 n은 지정된 입력 인수이고 dmuSigma로 지정된 차원입니다.

mu가 행렬이고 Sigma가 배열이면 mvnrndmu(i,:)Sigma(:,:,i)를 사용하여 R(i,:)를 계산합니다.

세부 정보

모두 축소

다변량 정규분포

다변량 정규분포는 일변량 정규분포를 둘 이상의 변수로 일반화한 것입니다. 다변량 정규분포는 두 개의 모수, 평균 벡터 μ와 공분산 행렬 Σ를 갖습니다. 이는 일변량 정규분포의 모수인 평균, 분산과 비슷합니다. Σ의 대각선 요소는 각 변수에 대한 분산을 포함하고, Σ의 비대각선 요소는 변수 간 공분산을 포함합니다.

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 이전에 개발됨

참고 항목

| |

도움말 항목