mirror of
https://github.com/SheffieldML/GPy.git
synced 2026-05-18 13:55:14 +02:00
small changes to the lengthscales such that the periodic kernels can be called as the non-periodic ones
This commit is contained in:
parent
66f25769bc
commit
421b87a07c
3 changed files with 13 additions and 10 deletions
|
|
@ -21,13 +21,14 @@ class periodic_Matern32(kernpart):
|
|||
"""
|
||||
|
||||
def __init__(self,D=1,variance=1.,lengthscale=None,period=2*np.pi,n_freq=10,lower=0.,upper=4*np.pi):
|
||||
assert D==1
|
||||
assert D==1, "Periodic kernels are only defined for D=1"
|
||||
self.name = 'periodic_Mat32'
|
||||
self.D = D
|
||||
if lengthscale is not None:
|
||||
assert lengthscale.shape==(self.D,)
|
||||
lengthscale = np.asarray(lengthscale)
|
||||
assert lengthscale.size == 1, "Wrong size: only one lengthscale needed"
|
||||
else:
|
||||
lengthscale = np.ones(self.D)
|
||||
lengthscale = np.ones(1)
|
||||
self.lower,self.upper = lower, upper
|
||||
self.Nparam = 3
|
||||
self.n_freq = n_freq
|
||||
|
|
|
|||
|
|
@ -21,13 +21,14 @@ class periodic_Matern52(kernpart):
|
|||
"""
|
||||
|
||||
def __init__(self,D=1,variance=1.,lengthscale=None,period=2*np.pi,n_freq=10,lower=0.,upper=4*np.pi):
|
||||
assert D==1
|
||||
assert D==1, "Periodic kernels are only defined for D=1"
|
||||
self.name = 'periodic_Mat52'
|
||||
self.D = D
|
||||
if lengthscale is not None:
|
||||
assert lengthscale.shape==(self.D,)
|
||||
lengthscale = np.asarray(lengthscale)
|
||||
assert lengthscale.size == 1, "Wrong size: only one lengthscale needed"
|
||||
else:
|
||||
lengthscale = np.ones(self.D)
|
||||
lengthscale = np.ones(1)
|
||||
self.lower,self.upper = lower, upper
|
||||
self.Nparam = 3
|
||||
self.n_freq = n_freq
|
||||
|
|
|
|||
|
|
@ -21,13 +21,14 @@ class periodic_exponential(kernpart):
|
|||
"""
|
||||
|
||||
def __init__(self,D=1,variance=1.,lengthscale=None,period=2*np.pi,n_freq=10,lower=0.,upper=4*np.pi):
|
||||
assert D==1
|
||||
assert D==1, "Periodic kernels are only defined for D=1"
|
||||
self.name = 'periodic_exp'
|
||||
self.D = D
|
||||
if lengthscale is not None:
|
||||
assert lengthscale.shape==(self.D,)
|
||||
lengthscale = np.asarray(lengthscale)
|
||||
assert lengthscale.size == 1, "Wrong size: only one lengthscale needed"
|
||||
else:
|
||||
lengthscale = np.ones(self.D)
|
||||
lengthscale = np.ones(1)
|
||||
self.lower,self.upper = lower, upper
|
||||
self.Nparam = 3
|
||||
self.n_freq = n_freq
|
||||
|
|
@ -45,7 +46,7 @@ class periodic_exponential(kernpart):
|
|||
r = np.sqrt(r1**2 + r2**2)
|
||||
psi = np.where(r1 != 0, (np.arctan(r2/r1) + (r1<0.)*np.pi),np.arcsin(r2))
|
||||
return r,omega[:,0:1], psi
|
||||
|
||||
|
||||
def _int_computation(self,r1,omega1,phi1,r2,omega2,phi2):
|
||||
Gint1 = 1./(omega1+omega2.T)*( np.sin((omega1+omega2.T)*self.upper+phi1+phi2.T) - np.sin((omega1+omega2.T)*self.lower+phi1+phi2.T)) + 1./(omega1-omega2.T)*( np.sin((omega1-omega2.T)*self.upper+phi1-phi2.T) - np.sin((omega1-omega2.T)*self.lower+phi1-phi2.T) )
|
||||
Gint2 = 1./(omega1+omega2.T)*( np.sin((omega1+omega2.T)*self.upper+phi1+phi2.T) - np.sin((omega1+omega2.T)*self.lower+phi1+phi2.T)) + np.cos(phi1-phi2.T)*(self.upper-self.lower)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue