Skip to content

Commit 836ccb6

Browse files
committed
Add GaborKernel
1 parent 214b83f commit 836ccb6

File tree

2 files changed

+21
-1
lines changed

2 files changed

+21
-1
lines changed

src/KernelFunctions.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ include("distances/dotproduct.jl")
4444
include("distances/delta.jl")
4545
include("transform/transform.jl")
4646

47-
for k in ["exponential","matern","polynomial","constant","rationalquad","exponentiated"]
47+
for k in ["exponential","matern","polynomial","constant","rationalquad","exponentiated","gabor"]
4848
include(joinpath("kernels",k*".jl"))
4949
end
5050
include("kernels/transformedkernel.jl")

src/kernels/gabor.jl

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
"""
2+
GaborKernel(; ell::Real=1.0, p::Real=1.0)
3+
4+
Gabor kernel with length scale ell and period p. Given by
5+
```
6+
κ(x,y) = h(x-z), h(t) = exp(-sum(t.^2./(2*ell.^2)))*cos(2*pi*sum(t./p))
7+
```
8+
9+
"""
10+
struct GaborKernel{T<:Real} <: BaseKernel
11+
ell::T
12+
p::T
13+
function GaborKernel(;ell::T=1.0, p::T=1.0) where {T<:Real}
14+
new{T}(ell, p)
15+
end
16+
end
17+
18+
kappa::GaborKernel, d::T) where {T<:Real} = exp(-sum(d.^2 ./(2*κ.ell.^2)))*cospi(2*sum(d)./ κ.p)
19+
20+
metric(::GaborKernel) = Euclidean()

0 commit comments

Comments
 (0)