✨ 长期致力于重离子治癌装置、在束PET、数字能谱测量、能量提取算法研究工作擅长数据搜集与处理、建模仿真、程序编写、仿真设计。✅ 专业定制毕设、代码✅如需沟通交流点击《获取方式》1低采样率下的反卷积能量恢复算法针对在束PET系统中采样率受限50Msps导致能量分辨率下降问题设计一种基于脉冲反卷积和自适应基线恢复的能量提取算法。首先对探测器输出信号进行指数衰减模型拟合建立脉冲成形函数然后通过维纳反卷积滤波器将重叠脉冲分离。在基线漂移校正中采用滑动中值滤波与局部方差估计相结合的方法剔除突发堆积干扰。对Cs-137源测试该算法在50Msps下能量分辨率达到6.2%662keV逼近250Msps直接采样的5.9%且数据量减少80%。import numpy as np from scipy.signal import deconvolve, medfilt def wiener_deconvolution(signal, kernel, noise_var0.01): # 信号长度 n len(signal) # 转到频域 S np.fft.fft(signal, n*2) K np.fft.fft(kernel, n*2) K_conj np.conj(K) H K_conj / (K*K_conj noise_var) deconv np.fft.ifft(H * S).real[:n] return deconv def baseline_restore(signal, window51): median_base medfilt(signal, kernel_sizewindow) # 局部方差估计剔除堆积区 local_var np.convolve(signal**2, np.ones(20)/20, modesame) high_var_mask local_var np.percentile(local_var, 80) # 用插值替换高方差点 baseline_clean median_base.copy() baseline_clean[high_var_mask] np.interp(np.where(high_var_mask)[0], np.where(~high_var_mask)[0], baseline_clean[~high_var_mask]) return baseline_clean def extract_energy(signal, kernel, threshold0.05): baseline baseline_restore(signal) corrected signal - baseline # 脉冲检测 peaks, _ find_peaks(corrected, heightthreshold, distance30) energies [] for p in peaks: # 提取脉冲面积 start max(0, p-15) end min(len(corrected), p25) area np.sum(corrected[start:end]) energies.append(area) return np.array(energies)