查找相关数据集的缩放因子

时间:2017-11-14 07:43:05

标签: python numpy scipy interpolation data-fitting

我有来自两个来源的两个数据集,其中包含一个信号并希望找到两者之间的因子。 它们在x和y中具有不同的分辨率,并且一组比另一组噪声更大。

以下给出了一个简单的近似,尽管实际数据并不遵循易于拟合的多项式。

import numpy as np
import matplotlib.pyplot as plt

datax1 = np.linspace(0,100,1000)
datay1 = np.around(datax1,-1)**2

datax2 = np.linspace(0,100,80)+np.random.normal(0,0.2,80)
datay2 = (datax2**2)*np.random.normal(5,0.5)+np.random.normal(0,500,80)

plt.title('Data 1 VS Data 2')
plt.plot(datax1,datay1,'b',label='Data 1')
plt.plot(datax2,datay2,'r',label='Data 2')            
plt.legend()
plt.savefig('img.png', bbox_inches='tight', dpi=72)

similar data, different noise and rez

我需要自动找到这个因素,因为我有更多的数据集需要分析,但是SciPy的curve_fitinterpolate的搭配并不合适

import scipy.optimize as opt
import scipy.interpolate as interp

def func(x,k):
    fun=interp(datax1,datay1*k)
    return fun(x)

print opt.curve_fit(func,datax2,datay2)

仅在TypeError: 'module' object is not callable

的定义中返回fun

有没有办法用numpy或scipy做这个,还是我必须建立自己的最小二乘函数来找到数据的缩放?

0 个答案:

没有答案