python渐变_嘈杂的数据中的渐变,python

我有宇宙射线探测器的能谱.光谱遵循指数曲线,但它会有宽的(也可能是非常轻微的)肿块.显然,数据包含噪声元素.

我正在尝试平滑数据,然后绘制其渐变.

到目前为止,我一直在使用scipy sline函数来平滑它,然后使用np.gradient().

从图中可以看出,梯度函数的方法是找出每个点之间的差异,并且它不会非常清楚地显示肿块.

我基本上需要一个平滑的梯度图.任何帮助都会很棒!

我尝试了2个样条方法:

def smooth_data(y,x,factor):

print "smoothing data by interpolation..."

xnew=np.linspace(min(x),max(x),factor*len(x))

smoothy=spline(x,y,xnew)

return smoothy,xnew

def smooth2_data(y,factor):

xnew=np.linspace(min(x),factor*len(x))

f=interpolate.UnivariateSpline(x,y)

g=interpolate.interp1d(x,y)

return g(xnew),xnew

编辑:尝试数值区分:

def smooth_data(y,xnew

def minim(u,f,k):

""""functional to be minimised to find optimum u. f is original,u is approx"""

integral1=abs(np.gradient(u))

part1=simps(integral1)

part2=simps(u)

integral2=abs(part2-f)**2.

part3=simps(integral2)

F=k*part1+part3

return F

def fit(data_x,data_y,denoising,smooth_fac):

smy,xnew=smooth_data(data_y,data_x,smooth_fac)

y0,xnnew=smooth_data(smy,xnew,1./smooth_fac)

y0=list(y0)

data_y=list(data_y)

data_fit=fmin(minim,y0,args=(data_y,denoising),maxiter=1000,maxfun=1000)

return data_fit

但是,它只是再次返回相同的图形!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值