编辑:标题
Edit2:更清晰的低计数率图片。
Edit3:为上下文添加了第二句。
Edit4:添加了反卷积尝试
我一直在查看我拍摄的辐射范围内的一些痕迹。这是取自 Geiger Muller (GM) 管的迹线。我的 DSP 真的生锈了,我什至不记得该叫什么。
首先,我有一个类似以下的信号,在低速率下,找到峰值并确定高度相当简单。我只是乘坐503 - 高峰。
有时事件会叠加,起初我满足于使用每个点相对于虚线的值。
随着脉搏率越来越高,这开始成为一个更大的问题。我的峰值检测开始越来越多地错过。
我可以做一个高通滤波器来消除一些噪音,这有很大帮助。但是,我很难找到清理信号、峰值振铃和信号相位/幅度移动之间的最佳点。下面是巴特沃斯低通。
我还希望能够根据移动的距离来表征高度,我想我可以找到高峰并做一些逻辑来尝试做出合理准确的估计。
我的最终目标是获得脉冲高度和脉冲之间距离的直方图。以下是基于峰值点与其他一些图中显示的紫色虚线基线的示例。
但我觉得我现在已经很熟悉了,我的问题是这个。
有没有人对如何改进这个或我可以采取的不同方法有任何建议?我对一些 FIR(无论如何我认为它的 FIR)过滤器有一个模糊的回忆,它们可以“转换”这样的脉冲,但在我的搜索中没有任何东西跳出来。
感谢您阅读,如果您做到了这一点。
高层观点。请注意,“香蕉”级别具有如此多的微脉冲,它使大脉冲始终间隔开。
更新
反卷积尝试:
按照以下建议之一,我尝试通过反卷积找到脉冲。我说尝试是因为我显然错过了一些东西。
from scipy import signal
single_peak_l_edge = find_nearest_position(raw_dat["Time"], -0.000115)
single_peak_r_edge = find_nearest_position(raw_dat["Time"], 0.0002)
single_peak = raw_dat[single_peak_l_edge:single_peak_r_edge].copy().reset_index(drop=True)
print(raw_dat.head())
print(single_peak.head())
decon, remainder = signal.deconvolve(raw_dat["Channel A"], single_peak["Channel A"])
fig, ax = plt.subplots(1, 1)
ax.plot(single_peak["Channel A"])
ax.set_title("Template")
fig, ax = plt.subplots(2, 1, sharex=True)
ax[0].plot(raw_dat["Channel A"])
ax[0].set_title("Origional")
#ax[0].set_xlim(0, 40e3)
ax[1].plot(decon)
ax[1].set_title("Deconvolved")