使用matlab的高斯过程的平方协方差函数?

Squared covariance function of Gaussian process using matlab?

这是我第一次尝试编写协方差函数。我有以下值,

x = [-1.50 -1.0 -.75 -.40 -.25 0.00]; 
sf = 1.27;
ell = 1;
sn = 0.3;

平方指数协方差函数的公式为

我写的 matlab 代码为:

K = sf^2*exp(-0.5*(squareform(pdist(x)).^2)/ell^2)+(sn)^2*eye(Ntr,Ntr);

其中sf是信号标准差,ell特征长度尺度,sn噪声标准差和Ntr训练输入数据的长度x。 但这没有给我任何结果。我的编码有什么错误吗?

一旦我计算,我想总结成矩阵形式,如下所示,

有什么帮助吗?

if x_ = 0.2 那么我们如何计算:

a) K_ =[k(x_,x1) k(x_,x2)..........k(x_,xn)]

b) K__ = k(x_,x_)

使用 matlab ?

我收到以下错误消息:

Error using  + 
Matrix dimensions must agree.

Error in untitled3 (line 7)
K = sf^2*exp(-0.5*(squareform(pdist(x)).^2)/ell^2)+(sn)^2*eye(Ntr,Ntr);

说明你的矩阵维度不一致。如果您分别评估代码的各个部分,您会注意到 pdist(x) returns 一个 1x0 向量。在 pdist 的文档中解释了 x 的预期格式:

Rows of X correspond to observations, and columns correspond to variables

因此,您应该计算 x 的转置,而不是计算 pdist(x),即 pdist(x.'):

K = sf^2*exp(-0.5*(squareform(pdist(x.')).^2)/ell^2)+(sn)^2*eye(Ntr,Ntr);

作为结论,请始终仔细阅读错误消息和文档,尤其是输入参数的预期格式。

子题

要为 x_ 的特定值计算 K(在您提到的公式中为 x'),您几乎可以将给定的公式直接转换为 MATLAB:

K_ = sf^2*exp(-0.5*(x-x_).^2/ell^2)+(sn)^2*(x == x_);

要计算K__,您可以使用上面的公式并设置x = x_,或者您可以将公式简化为:

K__ = sf^2+sn^2;