我想复制一个类似的情节:
(来源:brleader.com)
我的意思是我有一组数据点,我想有一条曲线来显示平均趋势。
我试着在函数y=2x中加入随机噪声
from scipy import interpolate
x=arange(0,1,1e-3)
noise=np.random.random(len(x))
y=2*x+noise
然后我用Scipt函数插值数据
xnew=arange(0,1,1e-1)
f=interpolate.UnivariateSpline(x,y)
g=interpolate.interp1d(x,y)
plot(x,y,'ro',xnew,f(xnew),'-',xnew,g(xnew),'--')
show()
但我得到的曲线几乎不像y=2*x。我希望有一个平滑的曲线来平均数据。我可以使用哪种方法/功能?
最佳答案
曲线看起来不像y=2*x
的原因之一(我认为是的,但这取决于意见)是,与y的平均变化相比,您的噪声较大。如果您尝试以下方法:
noise=0.1*np.random.random(len(x))
(即使噪音更小)或
y=5*x**2+noise
(即使
y
中的更改变大),您将看到插值更好地跟踪数据。您可能还想签出:
http://www.scipy.org/Cookbook/SignalSmooth