2016-03-02 164 views
-3

我只是想抓住scipy.optimize.curve_fit函数抛出的ValuError,但我意识到它不被认为是一个有效的异常。scipy.optimize曲线拟合

这里是我的代码:

 from scipy.optimize import curve_fit 

    ksi=((185/((xdata_1/420)**2 + (420/xdata_1)**2 + 90)) + (27/((xdata_1/800)**4 + (800/xdata_1)**4 + 5.50)) + (0.005/((xdata_1/2200)**2 + (2200/xdata_1)**2 - 1.95)) + (0.012/((xdata_1/180000)**2 + (180000/xdata_1)**2 -1.8))+ (0.01/((xdata_1/97000)**2 + (97000/xdata_1)**2 -1.95)) + (0.03/((xdata_1/250000)**2 + (250000/xdata_1)**2)) ) 

    def power(xdata_1,cc,dd,gg): 
     global ksi 
     return cc*(xdata_1**(dd))*(10**(-1.572*gg*(ksi))) 

这是一个完整的警告,我得到:

ValueError异常:操作数无法与形状(455)一起广播(1772)

我该如何解决这个问题?

+1

如果问题出现在scipy curve_fit中,你能发表一个包含代码部分的例子吗? – Chris

+0

不清楚你在问什么。 “我只是想抓住一个ValuError”,但是在你的代码中没有任何事情,“这是我得到的完整警告:ValueError ...”这是一个警告还是错误?哪一行代码触发它? “我如何解决这个问题?”究竟是什么问题? – Goyo

+0

考虑到ksi只取决于xdata_1,我不认为有必要使用全局的方式来浑水。至于你的警告,cc,dd,gg或xdata_1或ksi之一的长度与其他长度不同,所以你的电源功能会在广播中遇到麻烦。 –

回答

0

只是猜测,因为你没有上传整个代码。认为我前段时间有同样的问题。我意识到我一直在使用列表而不是Numpy数组。转换为数组为我修复了它。数组的大小也必须相同。