Matlab实现高斯过程

时间:2017-12-14 21:28:20

标签: matlab

我想在Matlab中实现以下高斯过程。到目前为止,我尝试过normpdf和normrnd,但结果并不是我所期待的。 BNxN矩阵,en的预期结果是Nx1向量。使用这两种方法,我得到一个NxN矩阵。

有什么建议吗?

gaussian process

2 个答案:

答案 0 :(得分: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个样本,您可以将其更改为您需要的许多样本。另请记住在应用程序中将维度2更改为N

答案 1 :(得分: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);