@@ -3,13 +3,20 @@ using .PDMats: PDMat
33export kernelpdmat
44
55"""
6- Compute a positive-definite matrix in the form of a `PDMat` matrix see [PDMats.jl](https://github.com/JuliaStats/PDMats.jl)
7- with the cholesky decomposition precomputed.
8- The algorithm recursively tries to add recursively a diagonal nugget until positive
9- definiteness is achieved or that the noise is too big.
6+ kernelpdmat(k::Kernel, X::AbstractMatrix; obsdim::Int=2)
7+ kernelpdmat(k::Kernel, X::AbstractVector)
8+
9+ Compute a positive-definite matrix in the form of a `PDMat` matrix see [PDMats.jl](https://github.com/JuliaStats/PDMats.jl)
10+ with the cholesky decomposition precomputed.
11+ The algorithm recursively tries to add recursively a diagonal nugget until positive
12+ definiteness is achieved or until the noise is too big.
1013"""
1114function kernelpdmat (κ:: Kernel , X:: AbstractMatrix ; obsdim:: Int = defaultobs)
12- K = kernelmatrix (κ, X; obsdim= obsdim)
15+ return kernelpdmat (κ, vec_of_vecs (X; obsdim= obsdim))
16+ end
17+
18+ function kernelpdmat (κ:: Kernel , X:: AbstractVector )
19+ K = kernelmatrix (κ, X)
1320 Kmax = maximum (K)
1421 α = eps (eltype (K))
1522 while ! isposdef (K + α * I) && α < 0.01 * Kmax
@@ -24,7 +31,3 @@ function kernelpdmat(κ::Kernel, X::AbstractMatrix; obsdim::Int=defaultobs)
2431 end
2532 return PDMat (K + α * I)
2633end
27-
28- function kernelpdmat (κ:: Kernel , X:: AbstractVector{<:Real} ; obsdim= defaultobs)
29- return kernelpdmat (κ, reshape (X, 1 , :); obsdim= 2 )
30- end
0 commit comments