N=100; T=10; LAMBDA=.4; %Make an x matrix x = rand(2,N); w = sqrt(0.1)*randn(N,1); y=zeros(N,1); for i=1:size(x,2) %y=u*sin(2*pi*(u+v)) + v*sin(3*pi*(u-v)) y(i)=x(1,i)*sin(2*pi*(x(1,i)+x(2,i))) + x(2,i)*sin(3*pi*(x(1,i)-x(2,i))) + w(i); end; %Gaussian GK=zeros(N,N); for i=1:size(x,2) for j=1:size(x,2) GK(i,j)=Gkernel(1,x(:,i),x(:,j)); end; end; GC=inv(LAMBDA*eye(size(GK))+GK)*y; %Linear LK=zeros(N,N); for i=1:size(x,2) for j=1:size(x,2) LK(i,j)=x(:,i)'*x(:,j); end; end; LC=inv(LAMBDA*eye(size(LK))+LK)*y; %Polynomial PK=zeros(N,N); for i=1:size(x,2) for j=1:size(x,2) PK(i,j)=(1+x(:,i)'*x(:,j))^2; end; end; PC=inv(LAMBDA*eye(size(PK))+PK)*y; xt = rand(2,T); yt = zeros(1,size(xt,2)); for i=1:size(xt,2) yt(i)=xt(1,i)*sin(2*pi*(xt(1,i)+xt(2,i))) + xt(2,i)*sin(3*pi*(xt(1,i)-xt(2,i))); end; gt = zeros(1,size(xt,2)); for i=1:size(xt,2) for j=1:size(x,2) gt(i)=gt(i)+GC(j)*Gkernel(1,x(:,j),xt(:,i)); end; end; lt = zeros(1,size(xt,2)); for i=1:size(xt,2) for j=1:size(x,2) lt(i)=lt(i)+LC(j)*x(:,j)'*xt(:,i); end; end; pt = zeros(1,size(xt,2)); for i=1:size(xt,2) for j=1:size(x,2) pt(i)=pt(i)+PC(j)*(1+x(:,j)'*xt(:,i))^2; end; end; ge = sum((gt-yt).^2,2); le = sum((lt-yt).^2,2); pe = sum((pt-yt).^2,2);