扩展已有库函数时出错

我想扩展CurveFitcurve_fit函数,实现对指定的几阶用超定方程求系数。
于是我导入curve_fit函数,并重新导出。

module DoubleRFs

using FFTW, Interpolations, LinearAlgebra
using CurveFit: curve_fit, ExpFit, LinearFit
using Polynomials:Poly

export curve_fit

function curve_fit(xvec::Vector{Float64}, yvec::Vector{Float64}, ordervec::Vector{Int64})
    ndata = length(xvec)
    norders = length(ordervec)
    X = zeros(ndata, norders)
    for col in 1:norders, row in 1:ndata
        X[row, col] = xvec[row]^ordervec[col]
    end
    factors=inv(transpose(X) * X) * transpose(X) * yvec
    allfactors = zeros(ordervec[end]+1)
    for idx in 1:norders
        order = ordervec[idx]
        allfactors[order+1]=factors[idx]
    end
    Poly(allfactors)
end
Base.invokelatest(curve_fit)   # 这个不知道用的对不对?反正结果一样的错

end

然后我进入pkg模式add Polynomial结果失败了。


Pkg.precompile()尝试,报错:

ERROR: LoadError: LoadError: error in method definition: function CurveFit.curve_fit must be explicitly imported to be extended

我看外面这种报错用CurveFit: curve_fit精确导入就行了。但是我这里原本就是这么做的。

这里需要用import

import CurveFit: curve_fit

或者

using CurveFit

function CurveFit.curve_fit(...)
#...
end
1 个赞

谢谢,谷歌的时候,没注意前面usingimport的不同