https://www.youtube.com/watch?v=16oPvgOd3UI function GP_1d kernel=5; switch kernel case 1; k = @(x,y) 1*x'*y; % linear case 2; k = @(x,y) 1*min(x,y); % brownian motion case 3; k = @(x,y) exp(-100*(x-y)'*(x-y)); % squared case 4; k = @(x,y) exp(-1*sqrt(x-y)'*(x-y)); % Ornistin case 5; k = @(x,y) exp(-1*sin(5*pi*(x-y))^2); % periodic end % choose points at which to sample x = (0:.005:1); n = length(x); % covariance matrix C = zeros(n,n); for i=1:n for j=1:n C(i,j) = k (x(i), x(j)) ; end end % sample from gaussian process at this points u = randn(n,1); [A, S , B ] = svd(C); z = A *sqrt(S)*u; % plot figure(2); hold on; plot(x, z, '.-'); axis([0, 1, -2, 2]); end ============ IN 2D ======== function GP_2d kernel=3; switch kernel case 1; k = @(x,y) 1*x'*y; % linear case 2; k = @(x,y) 1*min(x,y); % brownian motion case 3; k = @(x,y) exp(-100*(x-y)'*(x-y)); % squared case 4; k = @(x,y) exp(-1*sqrt(x-y)&