4

必要M x Mな共分散Rとサンプル ベクトルの必要な数を指定して、標準の MATLAB でガウス ランダム ベクトルをN計算します(つまり、 は使用できません)。N x MXr = mvnrnd(MU,SIGMA,cases)

これに取り組む方法がよくわかりません。通常、ガウス確率変数を生成するには、共分散と平均が必要です。私は考えsqrtmchol役に立つかもしれません。

4

2 に答える 2

3

例:

% Gaussian mean and covariance
d = 2;             % number of dimensions
mu = rand(1,d);
sigma = rand(d,d); sigma = sigma*sigma';

% generate 100 samples from above distribution
num = 100;
X = mvnrnd(mu, sigma, num);

% plot samples (only for 2D case)
scatter(X(:,1), X(:,2), 'filled'), hold on
ezcontour(@(x,y) mvnpdf([x y], mu, sigma), xlim(), ylim())
title('X~N(\mu,\sigma)')
xlabel('X_1'), ylabel('X_2')

2d ガウス サンプル

上記のコードでは、Statistics ツールボックスの関数 ( mvnrndおよびmvnpdf ) を使用しています。アクセスできない場合は、これらの代替品を検討してください(他の人が言及したのと同じ概念を使用して):

mvnrnd = @(mu,S,num) bsxfun(@plus, randn(num,numel(mu))*cholcov(S), mu);

mvnpdf = @(x,mu,S) exp(-0.5*(x-mu)*(S\(x-mu)')) / sqrt((2*pi)^d*det(S));

多変量正規分布 PDF

于 2013-09-22T15:07:54.060 に答える
3

MATLAB 統計ツールボックスにアクセスできる場合はedit mvnrnd、MATLAB と入力して解を表示できます。

[T p] = chol(sigma);
if m1 == c
  mu = mu';
end
mu = mu(ones(cases,1),:);
r = randn(cases,c) * T + mu;

これを指摘するのはごまかしのように感じますが、MATLAB のソースを編集することは、一般的なことを理解するのに非常に役立ちます。mvnrnd.mツールボックスがない場合は、Google で検索することもできます。

于 2013-09-20T02:37:16.783 に答える