【发布时间】:2021-10-15 16:32:51
【问题描述】:
我有一个显示为直方图的模拟信号。我想使用具有特定宽度的高斯卷积来模拟实际测量信号,因为在实际实验中,检测器在测量通道中具有一定的不确定性。
我尝试使用np.convolve 和scipy.signal.convolve 进行卷积,但似乎无法正确过滤。不仅预期的形状是关闭的,这将是直方图和 x 轴的轻微涂抹版本,例如能量刻度也关闭了。
我尝试将宽度为 20 keV 的高斯定义为:
gauss = np.random.normal(0, 20000, len(coincidence['esum']))
hist_gauss = plt.hist(gauss, bins=100)[0]
其中len(coincidence['esum']) 是我的coincidencedataframe 列的长度。我使用的此列:
counts = plt.hist(coincidence['esum'], bins=100)[0]
除了生成合适的高斯的这种方法之外,我尝试了scipy.signal.gaussian(50, 30000),它不幸地生成了 抛物线外观 曲线并且没有表现出特征尾部。
我尝试使用两种高斯方法同时使用coincidence['esum'] 和counts 进行卷积。请注意,根据Finding the convolution of two histograms 对标准示例进行简单卷积时,它可以正常工作。
有人知道如何在 python 中进行这样的卷积吗?我将用于直方图的coincidende['esum'] 列导出到了一个pastebin,以防有人感兴趣并希望使用特定数据https://pastebin.com/WFiSBFa6 重新创建它。
【问题讨论】:
标签: python numpy scipy signal-processing convolution