我有一个名为 X 的 Nx2 输入矩阵。我还有输出值 Y ,这是一个向量 Nx1 。我创建了一些数据进行测试,如下所示:
Xtest=linspace(x_min,x_max,n);
Ytest=linspace(y_min,y_max,n);
因此,矩阵 Z 具有 nx2 维度,并将用作我的测试点。我使用GPML lib提供的演示中的参数的默认调整,如下所示:
covfunc = {@covMaterniso, 3};
ell = 1/4; sf = 1;
hyp.cov = log([ell; sf]);
likfunc = @likGauss;
sn = 0.1;
hyp.lik = log(sn);
然后使用gp函数:
[ymu ys2 fmu fs2] = gp(hyp, @infExact, [], covfunc, likfunc, x, y, z);
我希望ymu是z中每个测试值的预测值。当我这样绘制时:
[L1,L2]=meshgrid(Xtest',Ytest');
[mu,~]=meshgrid(ymu,ymu);
surf(L1,L2,ymu);
我得到一个奇怪的表面。即我得到彩色区域的条纹,而不是一些预期的高斯式结构。 X 和 Y 中的数据是实际数据。
我期待的是:
答案 0 :(得分:3)
你错了。你的z变量应该由[L1(:),L2(:)]给出。那么你应该绘制的是:
surf(L1,L2,reshape(ymu,size(L1)));