在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上发布了这个问题,请点击这个链接进入页面:谢谢你的建议!!非常感谢!!