以下是基于传感器值(列
我使用以下代码:
x
)计算的距离(列 y
)。
test.txt - 内容
x y
----------
-51.61 ,1.5
-51.61 ,1.5
-51.7 ,1.53
-51.91 ,1.55
-52.28 ,1.62
-52.35 ,1.63
-52.49 ,1.66
-52.78 ,1.71
-52.84 ,1.73
-52.90 ,1.74
-53.21 ,1.8
-53.43 ,1.85
-53.55 ,1.87
-53.71 ,1.91
-53.99 ,1.97
-54.13 ,2
-54.26 ,2.03
-54.37 ,2.06
-54.46 ,2.08
-54.59 ,2.11
-54.89 ,2.19
-54.94 ,2.2
-55.05 ,2.23
-55.11 ,2.24
-55.17 ,2.26
我希望进行曲线拟合找到test.txt
中数据的常数a
和b
,该函数如下:
Function y = 10^((a-x)/10*b)
我使用以下代码:
import math
from numpy import genfromtxt
from scipy.optimize import curve_fit
inData = genfromtxt('test.txt',delimiter=',')
rssi_data = inData[:,0]
dist_data= inData[:,1]
print rssi_data
print dist_data
def func(x, a,b):
exp_val = (x-a)/(10.0*b)
return math.pow(10,exp_val)
coeffs, matcov = curve_fit(func,rssi_data,dist_data)
print(coeffs)
print(matcov)
这段代码无法成功执行。而且我不确定是否向curve_fit()
传递了正确的参数。
math.pow(10, exp_val)
更改为10**exp_val
。 - Alicia Garcia-Rabososcipy.optimize.curve_fit
期望一个函数作为其第一个参数,该函数可以接受numpy
数组作为输入,但是你的func
函数不行,因为math.pow
不支持。 - Alicia Garcia-Raboso