python中噪音是什么意思_噪声数据中的梯度,python

我有一个宇宙射线探测器的能谱。光谱遵循指数曲线,但会有很宽(可能很小)的肿块。显然,这些数据包含了一个噪声元素。

我试着把数据平滑,然后画出它的梯度。

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

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

我基本上需要一个平滑的梯度图。任何帮助都将是惊人的!

我尝试过两种样条曲线方法: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,x,factor):

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

f=interpolate.UnivariateSpline(x,y)

g=interpolate.interp1d(x,y)

return g(xnew),xnew

编辑:尝试数值微分: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 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、付费专栏及课程。

余额充值