2017-12-14 9 views
1

Matlabでは以下のガウスプロセスを実装したいと考えています。これまではnormpdfとnormrndを試しましたが、結果は私が期待していたものではありません。 BNxN行列であり、enの期待される結果はNx1ベクトルです。両方の方法を使用して、私はNxN行列を得る。Matlabはガウスプロセスを実装します

提案がありますか?

gaussian process

+0

これは変です。行列をシグマとして使用する場合は、多変量分布を扱う必要があり、行列を返す必要があります。 –

答えて

1

私は、これはあなたが探しているものだと思う:あなたは(独立した標準正規変数のサンプルを生成し、適切な変換を適用することにより)、手動で同じ計算を実行したい場合は

% Number of samples for each variable: 
k = 100; 

% Your parameters: 
mu = [0; 0]; % Vector of Means (0 in your case) 
cov = [3 1; 1 3]; % Covariance Matrix (your B) 

% Draw the samples... 
s = mvnrnd(mu,cov,k); 

% Number of samples for each variable: 
k = 100; 

% Your parameters: 
mu = [0 0]; % Vector of Means (0 in your case) 
cov = [3 1; 1 3]; % Covariance Matrix (your B) 

% Draw the samples... 
s_ind = randn(k,size(cov,1)); 
s = repmat(mu,k,1) + (chol(cov) * ind_s); 
+0

ご返信ありがとうございます。問題が解決しました! – mnmbs

1

randnのドキュメントページが二変量正規分布からのサンプルを生成するため、次の例を示している:

mu = [1 2]; 
sigma = [1 0.5; 0.5 2]; 
R = chol(sigma); 
z = repmat(mu,10,1) + randn(10,2)*R 

muは、適切な大きさのゼロベクトルに設定する必要が平均ベクトルであります。あなたの例では、sigmaは共分散行列、B^-1です。上の例では10個のサンプルを描画していますが、これを必要なだけ多く変更することができます。また、アプリケーションの寸法2Nに変更してください。

+0

ご返信ありがとうございました – mnmbs

関連する問題