【发布时间】:2016-05-09 12:35:27
【问题描述】:
所以我在这里遇到了这段代码的问题:
import numpy as np
import matplotlib.pyplot as plt
import scipy as sy
import pylab as plb
def oscDecay(x, A, B, C, tau, omega):
return A*(1+B*np.cos(omega*x))*np.exp(-1*x**2/(2*tau**2))+C
def LMfit(func, x, y, p0, sig):
#Fits data to non-linear curve using Levenberg-Marquart Method
#Inputs: func = the function you are fitting data to
# x, y = data set
# p0 = tuple containing inital guesses for fitting parameters
# sig = uncertainty in values
#Outputs: nlfit = array containing optimal values for fitting parameters
# nlcov = two dimensional array (square root of diagonals contain
# uncertainty in fitting parameters)
nlfit, nlpcov = sy.optimize.curve_fit(func, x, y, p0, sig)
return nlfit, nlpcov
data=np.loadtxt('testing.txt', skiprows=4)
x=data[:, 0]
y=data[:, 1]
sig=data[:, 2]
#intial parameters
A0=16.5
B0=0.57
C0=17
tau0=30
omega0=7
p0=(A0, B0, C0, tau0, omega0)
nlfit, nlpcov = LMfit(oscDecay, x, y, p0, sig)
当我尝试运行它时,我收到以下错误消息:
nlfit, nlpcov = sy.optimize.curve_fit(oscDecay, x, y, p0, sig)。 AttributeError:“模块”对象没有“优化”属性
我不确定这意味着什么,因为我的软件已经为我提供了 scipy.optimize 供我使用。
【问题讨论】:
-
你需要做
import scipy.optimize,而不仅仅是import scipy。
标签: python optimization scipy curve-fitting