在julia中使用代理项执行径向基插值时出现异常(7)?
我正在尝试使用在julia中使用代理项执行径向基插值时出现异常(7)?,julia,interpolation,Julia,Interpolation,我正在尝试使用代理包在Julia中执行径向基插值 我开发了以下代码: using Surrogates function t(train, test) xy = zip(train[:,1],train[:,2]) |> collect lb = vcat(minimum(train[:,1]), minimum(train([:,2])) ub = vcat(maximum(train([:,1]),maximum(train[:,2])) rbf =
代理
包在Julia
中执行径向基插值
我开发了以下代码:
using Surrogates
function t(train, test)
xy = zip(train[:,1],train[:,2]) |> collect
lb = vcat(minimum(train[:,1]), minimum(train([:,2]))
ub = vcat(maximum(train([:,1]),maximum(train[:,2]))
rbf = Surrogates.RadialBasis(xy, train[:,3], lb, ub)
testing = [rbf(i) for i in test]
return rbf, testing
end
train = [0.0 0.0 4;
0.0 0.0 2;
0.0 0.0 2;
0.0 0.0 2;
0.0 0.0 1;
0.0 0.0 3;
0.0 0.0 6;
0.0 0.0 7]
test = [(1.0, 1.0),
(1.0, 1.0),
(2.0, 2.0),
(2.0, 2.0),
(2.0, 2.0),
(2.0, 2.0),
(2.0, 2.0),
(2.0, 2.0)]
t(train, test)
然而,在执行上述代码时,我得到以下错误:
LinearAlgebra.SingularException(7)
Stacktrace:
[1] checknonsingular at C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.5\LinearAlgebra\src\factorization.jl:19 [inlined]
[2] checknonsingular at C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.5\LinearAlgebra\src\factorization.jl:21 [inlined]
[3] bunchkaufman!(::LinearAlgebra.Symmetric{Float64,Array{Float64,2}}, ::Bool; check::Bool) at C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.5\LinearAlgebra\src\bunchkaufman.jl:99
[4] #bunchkaufman#142 at C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.5\LinearAlgebra\src\bunchkaufman.jl:186 [inlined]
[5] #_factorize#94 at C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.5\LinearAlgebra\src\symmetric.jl:638 [inlined]
[6] _factorize at C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.5\LinearAlgebra\src\symmetric.jl:636 [inlined]
[7] factorize at C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.5\LinearAlgebra\src\symmetric.jl:634 [inlined]
[8] \(::LinearAlgebra.Symmetric{Float64,Array{Float64,2}}, ::Array{Float64,1}) at C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.5\LinearAlgebra\src\symmetric.jl:648
[9] _calc_coeffs(::Array{Tuple{Float64,Float64},1}, ::Array{Float64,1}, ::Array{Float64,1}, ::Array{Float64,1}, ::Function, ::Int64, ::Float64, ::Bool) at C:\Users\user\.julia\packages\Surrogates\wJbFN\src\Radials.jl:61
[10] RadialBasis(::Array{Tuple{Float64,Float64},1}, ::Array{Float64,1}, ::Array{Float64,1}, ::Array{Float64,1}; rad::Surrogates.RadialFunction{Int64,Surrogates.var"#1#2"}, scale_factor::Float64, sparse::Bool) at C:\Users\user\.julia\packages\Surrogates\wJbFN\src\Radials.jl:51
[11] RadialBasis(::Array{Tuple{Float64,Float64},1}, ::Array{Float64,1}, ::Array{Float64,1}, ::Array{Float64,1}) at C:\Users\user\.julia\packages\Surrogates\wJbFN\src\Radials.jl:49
请建议解决此问题的解决方案
谢谢 您的训练数据只包含一个具有多个值的采样点。替换为更多声音数据,您的代码即可正常工作:
julia> train = Float64[
1 2 3
4 5 6
7 8 9
]
3×3 Matrix{Float64}:
1.0 2.0 3.0
4.0 5.0 6.0
7.0 8.0 9.0
julia> t(train, test)
(RadialBasis{Surrogates.var"#1#2", Int64, Vector{Tuple{Float64, Float64}}, Vector{Float64}, Vector{Float64}, Vector{Float64}, Vector{Float64}, Float64, Bool}(Surrogates.var"#1#2"(), 0, [(1.0, 2.0), (4.0, 5.0), (7.0, 8.0)], [3.0, 6.0, 9.0], [1.0, 2.0], [7.0, 8.0], [0.3535533905932738, 0.0, -0.3535533905932738, 6.0], 1.0, false), [3.0939521879919494, 3.0939521879919494, 3.5922131362964587, 3.5922131362964587, 3.5922131362964587, 3.5922131362964587, 3.5922131362964587, 3.5922131362964587])
我已经在julia Discussion上发布了这个问题,请点击这个链接进入页面:谢谢你的建议!!非常感谢!!