Я новичок в Python/Scipy/Numpy.
Я успешно использовал пример отсюда для сглаживания данных с использованием метода наименьших квадратов. Но в паре случаев его точность падает на крайних значениях.
Похоже, что смещенная кривая мощности подходит лучше, но у меня проблемы с синтаксисом функции a(x-b)^c
, и я не уверен, что это будет работать с методом log10
.
Текущий код:
from scipy import *
from scipy import optimize
# # READ DATA FROM CSV FILE
DIA, FlowRate = genfromtxt('#ThisDataFile#', delimiter=',', unpack='true')
# # CONVERT DATA TO LOG ITS MORE ACCURATE
logx = log10(DIA)
logy = log10(FlowRate) #crlf#
# # define our (line) fitting function
fitfunc = lambda p, x: p[0] + p[1] * x
errfunc = lambda p, x, y: (y - fitfunc(p, x))
pinit = [5.0, -5.0]
out = optimize.leastsq(errfunc, pinit,
args=(logx, logy), full_output=1)
pfinal1 = out[0]
amp1 = 10.0**pfinal1[0]
print(amp1, pfinal1[1])
Может кто-то указать мне верное направление.
Спасибо Питер
Обновлять:
Пример данных (по измеренному) давлению:
DIA = [ 1, 2, 3, 4, 5, 6, 7, 8 ]
flow = [ 58.33254,
30.11954,
16.02723,
9.47614,
5.75362,
3.63373,
2.37532,
1.58426
]