繁体   English   中英

Matlab实现高斯过程

[英]Matlab implement gaussian process

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

有什么建议么?

高斯过程

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

我认为这是您要寻找的:

% 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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM