@@ -19,6 +19,7 @@ kernelmatrix
19
19
20
20
"""
21
21
kerneldiagmatrix!(K::AbstractVector, κ::Kernel, X; obsdim::Int = 2)
22
+ kerneldiagmatrix!(K::AbstractVector, κ::Kernel, X, Y; obsdim::Int = 2)
22
23
23
24
In place version of [`kerneldiagmatrix`](@ref)
24
25
"""
@@ -30,6 +31,11 @@ kerneldiagmatrix!
30
31
Calculate the diagonal matrix of `X` with respect to kernel `κ`
31
32
`obsdim = 1` means the matrix `X` has size #samples x #dimension
32
33
`obsdim = 2` means the matrix `X` has size #dimension x #samples
34
+
35
+ kerneldiagmatrix(κ::Kernel, X, Y; obsdim::Int = 2)
36
+
37
+ Calculate the diagonal of `kernelmatrix(κ, X, Y; obsdim)` efficiently. Requires that `X` and
38
+ `Y` are the same length.
33
39
"""
34
40
kerneldiagmatrix
35
41
@@ -59,8 +65,16 @@ function kerneldiagmatrix!(K::AbstractVector, κ::Kernel, x::AbstractVector)
59
65
return map! (x -> κ (x, x), K, x)
60
66
end
61
67
68
+ function kerneldiagmatrix! (
69
+ K:: AbstractVector , κ:: Kernel , x:: AbstractVector , y:: AbstractVector ,
70
+ )
71
+ return map! (κ, x, y)
72
+ end
73
+
62
74
kerneldiagmatrix (κ:: Kernel , x:: AbstractVector ) = map (x -> κ (x, x), x)
63
75
76
+ kerneldiagmatrix (κ:: Kernel , x:: AbstractVector , y:: AbstractVector ) = map (κ, x, y)
77
+
64
78
65
79
66
80
#
99
113
const defaultobs = 2
100
114
101
115
function kernelmatrix! (
102
- K:: AbstractMatrix , κ:: Kernel , X:: AbstractMatrix ; obsdim:: Int = defaultobs
116
+ K:: AbstractMatrix , κ:: Kernel , X:: AbstractMatrix ; obsdim:: Int = defaultobs,
103
117
)
104
118
return kernelmatrix! (K, κ, vec_of_vecs (X; obsdim= obsdim))
105
119
end
106
120
107
121
function kernelmatrix! (
108
122
K:: AbstractMatrix , κ:: Kernel , X:: AbstractMatrix , Y:: AbstractMatrix ;
109
- obsdim:: Int = defaultobs
123
+ obsdim:: Int = defaultobs,
110
124
)
111
- x = vec_of_vecs (X; obsdim= obsdim)
112
- y = vec_of_vecs (Y; obsdim= obsdim)
113
- return kernelmatrix! (K, κ, x, y)
125
+ return kernelmatrix! (K, κ, vec_of_vecs (X; obsdim= obsdim), vec_of_vecs (Y; obsdim= obsdim))
114
126
end
115
127
116
- function kernelmatrix (κ:: Kernel , X:: AbstractMatrix ; obsdim:: Int = defaultobs)
128
+ function kernelmatrix (κ:: Kernel , X:: AbstractMatrix ; obsdim:: Int = defaultobs)
117
129
return kernelmatrix (κ, vec_of_vecs (X; obsdim= obsdim))
118
130
end
119
131
120
132
function kernelmatrix (κ:: Kernel , X:: AbstractMatrix , Y:: AbstractMatrix ; obsdim= defaultobs)
121
- x = vec_of_vecs (X; obsdim= obsdim)
122
- y = vec_of_vecs (Y; obsdim= obsdim)
123
- return kernelmatrix (κ, x, y)
133
+ return kernelmatrix (κ, vec_of_vecs (X; obsdim= obsdim), vec_of_vecs (Y; obsdim= obsdim))
124
134
end
125
135
126
136
function kerneldiagmatrix! (
127
- K:: AbstractVector , κ:: Kernel , X:: AbstractMatrix ; obsdim:: Int = defaultobs
137
+ K:: AbstractVector , κ:: Kernel , X:: AbstractMatrix ; obsdim:: Int = defaultobs
128
138
)
129
139
return kerneldiagmatrix! (K, κ, vec_of_vecs (X; obsdim= obsdim))
130
140
end
131
141
132
- function kerneldiagmatrix (κ:: Kernel , X:: AbstractMatrix ; obsdim:: Int = defaultobs)
142
+ function kerneldiagmatrix! (
143
+ K:: AbstractVector , κ:: Kernel , X:: AbstractMatrix , Y:: AbstractMatrix ;
144
+ obsdim:: Int = defaultobs,
145
+ )
146
+ return kerneldiagmatrix! (
147
+ K, κ, vec_of_vecs (X; obsdim= obsdim), vec_of_vecs (Y; obsdim= obsdim),
148
+ )
149
+ end
150
+
151
+ function kerneldiagmatrix (κ:: Kernel , X:: AbstractMatrix ; obsdim:: Int = defaultobs)
133
152
return kerneldiagmatrix (κ, vec_of_vecs (X; obsdim= obsdim))
134
153
end
154
+
155
+ function kerneldiagmatrix (
156
+ κ:: Kernel , X:: AbstractMatrix , Y:: AbstractMatrix ; obsdim:: Int = defaultobs,
157
+ )
158
+ return kerneldiagmatrix (κ, vec_of_vecs (X; obsdim= obsdim), vec_of_vecs (Y; obsdim= obsdim))
159
+ end
0 commit comments