Question

I have an Nx2 input matrix called X. I also have the output values Y which is a vector Nx1. I create some data to test as follows:

Xtest=linspace(x_min,x_max,n);
Ytest=linspace(y_min,y_max,n);

So, matrix Z is of nx2 dimensions and is going to be used as my test points. I use the default tuning of the parameters found in the demo provided with the GPML lib which is as follows:

covfunc = {@covMaterniso, 3}; 
ell = 1/4; sf = 1; 
hyp.cov = log([ell; sf]);
likfunc = @likGauss; 
sn = 0.1;
hyp.lik = log(sn);

and then use the gp function:

[ymu ys2 fmu fs2] = gp(hyp, @infExact, [], covfunc, likfunc, x, y, z);

I expected ymu to be the predicted value for each testing value in z. When I plot this like this:

[L1,L2]=meshgrid(Xtest',Ytest');
[mu,~]=meshgrid(ymu,ymu);
surf(L1,L2,ymu);

I get a strange surface. i.e i get stripes of coloured area rather some Gaussian like structure which is expected. The data in X and Y are real life data. This is what I get from my code

What I would expect: What I would expect

Était-ce utile?

La solution

You're using it wrong. Your z variable should be given by [L1(:),L2(:)]. Then what you should plot is:

surf(L1,L2,reshape(ymu,size(L1)));
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top