这是我第一次尝试编写协方差函数。我有以下价值观,
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
是培训输入数据的长度{{1 }}。
但这没有给我任何结果。我的编码是否有任何错误?
请帮忙吗?
如果x
那么我们如何计算:
a)x_ = 0.2
和
b)K_ =[k(x_,x1) k(x_,x2)..........k(x_,xn)]
使用matlab?
答案 0 :(得分:1)
我收到以下错误消息:
f
表示您的矩阵尺寸不一致。如果您分别评估代码的各个部分,您会注意到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)
向量。在pdist
的文档中,解释了1x0
的预期格式:
X行对应于观察,列对应于 变量
因此,不应计算x
,而应计算pdist(x)
的转置,即x
:
pdist(x.')
作为结论,请务必仔细阅读错误消息和文档,尤其是输入参数的预期格式。
<强>子问题强>
要计算K = sf^2*exp(-0.5*(squareform(pdist(x.')).^2)/ell^2)+(sn)^2*eye(Ntr,Ntr);
特定值K
(在您提到的公式中为x_
),您可以将您给定的公式几乎字面转换为MATLAB:
x'
要计算K_ = sf^2*exp(-0.5*(x-x_).^2/ell^2)+(sn)^2*(x == x_);
,您可以使用上面的公式并设置K__
,或者您可以将公式简化为:
x = x_