55In-place version of [`kernelmatrix`](@ref) where pre-allocated matrix `K` will be
66overwritten with the kernel matrix.
77
8- kernelmatrix!(K::AbstractMatrix, κ::Kernel, X::AbstractMatrix; obsdim::Integer=2 )
8+ kernelmatrix!(K::AbstractMatrix, κ::Kernel, X::AbstractMatrix; obsdim)
99 kernelmatrix!(
1010 K::AbstractMatrix,
1111 κ::Kernel,
1212 X::AbstractMatrix,
1313 Y::AbstractMatrix;
14- obsdim::Integer=2 ,
14+ obsdim,
1515 )
1616
17- Equivalent to `kernelmatrix!(K, κ, ColVecs(X))` and
18- `kernelmatrix(K, κ, ColVecs(X), ColVecs(Y))` respectively.
19- Set `obsdim=1` to get `RowVecs`.
17+ If `obsdim=1`, equivalent to `kernelmatrix!(K, κ, RowVecs(X))` and
18+ `kernelmatrix(K, κ, RowVecs(X), RowVecs(Y))`, respectively.
19+ If `obsdim=2`, equivalent to `kernelmatrix!(K, κ, ColVecs(X))` and
20+ `kernelmatrix(K, κ, ColVecs(X), ColVecs(Y))`, respectively.
2021
2122See also: [`ColVecs`](@ref), [`RowVecs`](@ref)
2223"""
@@ -35,12 +36,13 @@ Compute the kernel `κ` for each pair of inputs in `x` and `y`.
3536Returns a matrix of size `(length(x), length(y))` satisfying
3637`kernelmatrix(κ, x, y)[p, q] == κ(x[p], y[q])`.
3738
38- kernelmatrix(κ::Kernel, X::AbstractMatrix; obsdim::Int=2 )
39- kernelmatrix(κ::Kernel, X::AbstractMatrix, Y::AbstractMatrix; obsdim::Int=2 )
39+ kernelmatrix(κ::Kernel, X::AbstractMatrix; obsdim)
40+ kernelmatrix(κ::Kernel, X::AbstractMatrix, Y::AbstractMatrix; obsdim)
4041
41- Equivalent to `kernelmatrix(κ, ColVecs(X))` and `kernelmatrix(κ, ColVecs(X), ColVecs(Y))`
42- respectively.
43- Set `obsdim=1` to get `RowVecs`.
42+ If `obsdim=1`, equivalent to `kernelmatrix(κ, RowVecs(X))` and
43+ `kernelmatrix(κ, RowVecs(X), RowVecs(Y))`, respectively.
44+ If `obsdim=2`, equivalent to `kernelmatrix(κ, ColVecs(X))` and
45+ `kernelmatrix(κ, ColVecs(X), ColVecs(Y))`, respectively.
4446
4547See also: [`ColVecs`](@ref), [`RowVecs`](@ref)
4648"""
@@ -52,18 +54,19 @@ kernelmatrix
5254
5355In place version of [`kernelmatrix_diag`](@ref).
5456
55- kernelmatrix_diag!(K::AbstractVector, κ::Kernel, X::AbstractMatrix; obsdim::Int=2 )
57+ kernelmatrix_diag!(K::AbstractVector, κ::Kernel, X::AbstractMatrix; obsdim)
5658 kernelmatrix_diag!(
5759 K::AbstractVector,
5860 κ::Kernel,
5961 X::AbstractMatrix,
6062 Y::AbstractMatrix;
61- obsdim::Int=2,
63+ obsdim
6264 )
6365
64- Equivalent to `kernelmatrix_diag!(K, κ, ColVecs(X))` and
65- `kernelmatrix_diag!(K, κ, ColVecs(X), ColVecs(Y))` respectively.
66- Set `obsdim=1` to get `RowVecs`.
66+ If `obsdim=1`, equivalent to `kernelmatrix_diag!(K, κ, RowVecs(X))` and
67+ `kernelmatrix_diag!(K, κ, RowVecs(X), RowVecs(Y))`, respectively.
68+ If `obsdim=2`, equivalent to `kernelmatrix_diag!(K, κ, ColVecs(X))` and
69+ `kernelmatrix_diag!(K, κ, ColVecs(X), ColVecs(Y))`, respectively.
6770
6871See also: [`ColVecs`](@ref), [`RowVecs`](@ref)
6972"""
@@ -79,11 +82,13 @@ Compute the diagonal of `kernelmatrix(κ, x)` efficiently.
7982Compute the diagonal of `kernelmatrix(κ, x, y)` efficiently.
8083Requires that `x` and `y` are the same length.
8184
82- kernelmatrix_diag(κ::Kernel, X::AbstractMatrix; obsdim::Int=2 )
83- kernelmatrix_diag(κ::Kernel, X::AbstractMatrix, Y::AbstractMatrix; obsdim::Int=2 )
85+ kernelmatrix_diag(κ::Kernel, X::AbstractMatrix; obsdim)
86+ kernelmatrix_diag(κ::Kernel, X::AbstractMatrix, Y::AbstractMatrix; obsdim)
8487
85- Equivalent to `kernelmatrix_diag(κ, ColVecs(X))` and
86- `kernelmatrix_diag(κ, ColVecs(X), ColVecs(Y))` respectively.
88+ If `obsdim=1`, equivalent to `kernelmatrix_diag(κ, RowVecs(X))` and
89+ `kernelmatrix_diag(κ, RowVecs(X), RowVecs(Y))`, respectively.
90+ If `obsdim=2`, equivalent to `kernelmatrix_diag(κ, ColVecs(X))` and
91+ `kernelmatrix_diag(κ, ColVecs(X), ColVecs(Y))`, respectively.
8792
8893See also: [`ColVecs`](@ref), [`RowVecs`](@ref)
8994"""
@@ -162,10 +167,10 @@ end
162167# Wrapper methods for AbstractMatrix inputs to maintain obsdim interface.
163168#
164169
165- const defaultobs = 2
170+ const defaultobs = nothing
166171
167172function kernelmatrix! (
168- K:: AbstractMatrix , κ:: Kernel , X:: AbstractMatrix ; obsdim:: Int = defaultobs
173+ K:: AbstractMatrix , κ:: Kernel , X:: AbstractMatrix ; obsdim:: Union{ Int,Nothing} = defaultobs
169174)
170175 return kernelmatrix! (K, κ, vec_of_vecs (X; obsdim= obsdim))
171176end
@@ -175,12 +180,12 @@ function kernelmatrix!(
175180 κ:: Kernel ,
176181 X:: AbstractMatrix ,
177182 Y:: AbstractMatrix ;
178- obsdim:: Int = defaultobs,
183+ obsdim:: Union{ Int,Nothing} = defaultobs,
179184)
180185 return kernelmatrix! (K, κ, vec_of_vecs (X; obsdim= obsdim), vec_of_vecs (Y; obsdim= obsdim))
181186end
182187
183- function kernelmatrix (κ:: Kernel , X:: AbstractMatrix ; obsdim:: Int = defaultobs)
188+ function kernelmatrix (κ:: Kernel , X:: AbstractMatrix ; obsdim:: Union{ Int,Nothing} = defaultobs)
184189 return kernelmatrix (κ, vec_of_vecs (X; obsdim= obsdim))
185190end
186191
@@ -189,7 +194,7 @@ function kernelmatrix(κ::Kernel, X::AbstractMatrix, Y::AbstractMatrix; obsdim=d
189194end
190195
191196function kernelmatrix_diag! (
192- K:: AbstractVector , κ:: Kernel , X:: AbstractMatrix ; obsdim:: Int = defaultobs
197+ K:: AbstractVector , κ:: Kernel , X:: AbstractMatrix ; obsdim:: Union{ Int,Nothing} = defaultobs
193198)
194199 return kernelmatrix_diag! (K, κ, vec_of_vecs (X; obsdim= obsdim))
195200end
@@ -199,19 +204,21 @@ function kernelmatrix_diag!(
199204 κ:: Kernel ,
200205 X:: AbstractMatrix ,
201206 Y:: AbstractMatrix ;
202- obsdim:: Int = defaultobs,
207+ obsdim:: Union{ Int,Nothing} = defaultobs,
203208)
204209 return kernelmatrix_diag! (
205210 K, κ, vec_of_vecs (X; obsdim= obsdim), vec_of_vecs (Y; obsdim= obsdim)
206211 )
207212end
208213
209- function kernelmatrix_diag (κ:: Kernel , X:: AbstractMatrix ; obsdim:: Int = defaultobs)
214+ function kernelmatrix_diag (
215+ κ:: Kernel , X:: AbstractMatrix ; obsdim:: Union{Int,Nothing} = defaultobs
216+ )
210217 return kernelmatrix_diag (κ, vec_of_vecs (X; obsdim= obsdim))
211218end
212219
213220function kernelmatrix_diag (
214- κ:: Kernel , X:: AbstractMatrix , Y:: AbstractMatrix ; obsdim:: Int = defaultobs
221+ κ:: Kernel , X:: AbstractMatrix , Y:: AbstractMatrix ; obsdim:: Union{ Int,Nothing} = defaultobs
215222)
216223 return kernelmatrix_diag (
217224 κ, vec_of_vecs (X; obsdim= obsdim), vec_of_vecs (Y; obsdim= obsdim)
0 commit comments