python - 如何计算信号数据的点扩散函数(PSF)?
问题描述
我在 pandas df 中有色谱数据(信号),其中一个信号处理步骤是执行峰锐化,如下图所示
参考文献如下:
文学算法
: K + 1 次迭代后的反卷积高分辨率数据
: 点扩散函数
自适应点扩散函数估计:在正则化迹线中检测峰值,并使用标准分类方法将其称为基。调用的峰值用于自适应地估计局部点扩散函数 h。时间定位参数 d 是根据片段中的峰间距估计的。
我怎样才能找到h
信号数据?已经通过以下
如何在 Python(Jupyter)中构建一个函数来计算点扩散函数(图像处理?)
在所有这些都是图像数据
Sample data
array([[ 31, 49, 1, 44],
[ 36, 48, 0, 47],
[ 43, 47, 0, 53],
[ 50, 44, 0, 63],
[ 59, 41, 0, 75],
[ 68, 40, 1, 90],
[ 78, 40, 6, 107],
[ 87, 41, 12, 123],
[ 99, 43, 20, 140],
[110, 45, 31, 155],
[121, 47, 42, 170],
[131, 48, 53, 182],
[140, 49, 63, 191],
[148, 50, 72, 196],
[155, 51, 79, 196],
[161, 53, 83, 189],
[166, 55, 83, 177],
[169, 58, 80, 160],
[170, 62, 72, 140],
[167, 65, 62, 119],
[161, 70, 51, 100],
[154, 75, 40, 84],
[144, 80, 30, 72],
[132, 86, 23, 65],
[121, 92, 19, 61],
[111, 98, 19, 61],
[106, 102, 23, 63],
[105, 104, 29, 67],
[111, 104, 38, 71],
[123, 102, 48, 75],
[141, 98, 59, 78],
[160, 92, 71, 79],
[179, 85, 85, 78],
[195, 77, 101, 74],
[205, 68, 117, 68],
[208, 59, 133, 61],
[203, 51, 145, 52],
[191, 43, 152, 43],
[173, 37, 154, 35],
[150, 32, 151, 28],
[123, 30, 142, 23],
[ 94, 32, 129, 20],
[ 65, 40, 114, 21],
[ 40, 52, 96, 25],
[ 21, 70, 77, 35],
[ 9, 91, 58, 51],
[ 1, 113, 39, 71],
[ 0, 134, 24, 97],
[ 0, 152, 13, 126],
[ 0, 168, 5, 157],
[ 0, 181, 0, 188],
[ 0, 193, 0, 216],
[ 0, 203, 0, 241],
[ 0, 211, 0, 258],
[ 0, 215, 0, 265],
[ 0, 213, 0, 262],
[ 0, 207, 0, 249],
[ 0, 195, 0, 227],
[ 0, 180, 0, 200],
[ 0, 164, 0, 170],
[ 0, 148, 0, 140],
[ 0, 132, 0, 113],
[ 0, 116, 0, 90],
[ 0, 100, 5, 74],
[ 0, 83, 18, 62],
[ 0, 66, 38, 57],
[ 0, 49, 64, 58],
[ 0, 36, 98, 64],
[ 0, 25, 133, 76],
[ 0, 18, 164, 94],
[ 0, 15, 187, 116],
[ 0, 16, 199, 143],
[ 0, 18, 199, 169],
[ 0, 22, 186, 193],
[ 1, 26, 164, 211],
[ 7, 28, 134, 222],
[ 17, 29, 102, 224],
[ 31, 28, 71, 218],
[ 50, 26, 44, 204],
[ 71, 22, 24, 184],
[ 91, 18, 11, 160],
[106, 13, 4, 134],
[117, 8, 3, 109],
[122, 5, 5, 85],
[120, 2, 10, 64],
[113, 0, 16, 46],
[101, 0, 22, 32],
[ 86, 0, 28, 22],
[ 69, 0, 34, 16],
[ 52, 3, 39, 13],
[ 36, 10, 44, 13],
[ 24, 22, 47, 18],
[ 18, 37, 48, 25],
[ 20, 56, 46, 36],
[ 31, 76, 39, 49],
[ 51, 94, 28, 63],
[ 81, 110, 19, 75],
[118, 123, 10, 85],
[158, 132, 4, 90],
[199, 136, 0, 89],
[236, 135, 0, 84],
[265, 131, 0, 73],
[282, 122, 0, 59],
[286, 110, 0, 44],
[277, 95, 0, 29],
[256, 79, 0, 17],
[226, 61, 0, 8],
[189, 44, 0, 2],
[150, 29, 6, 0],
[112, 17, 19, 0],
[ 77, 8, 41, 0],
[ 49, 3, 74, 0],
[ 28, 0, 117, 0],
[ 15, 0, 168, 3],
[ 7, 0, 224, 12],
[ 5, 0, 280, 28],
[ 5, 0, 333, 53],
[ 5, 0, 379, 87],
[ 5, 0, 411, 130],
[ 4, 0, 425, 178],
[ 2, 0, 419, 226],
[ 1, 0, 393, 271],
[ 0, 0, 350, 307],
[ 0, 0, 299, 329],
[ 0, 0, 248, 334],
[ 0, 0, 206, 320],
[ 0, 0, 178, 289],
[ 0, 0, 167, 246],
[ 0, 0, 173, 196],
[ 0, 0, 192, 146],
[ 0, 0, 217, 100],
[ 0, 0, 246, 61],
[ 0, 0, 275, 33],
[ 0, 0, 301, 15],
[ 0, 0, 326, 4],
[ 0, 0, 351, 0],
[ 0, 0, 377, 0],
[ 0, 0, 403, 0],
[ 0, 0, 430, 0],
[ 0, 0, 456, 0],
[ 0, 0, 484, 0],
[ 0, 0, 510, 0],
[ 0, 3, 535, 0],
[ 0, 7, 555, 0],
[ 0, 14, 569, 0],
[ 0, 22, 574, 0],
[ 0, 33, 572, 0],
[ 0, 44, 565, 0],
[ 0, 55, 555, 0],
[ 0, 66, 548, 0],
[ 1, 76, 546, 0],
[ 9, 84, 550, 0],
[ 27, 91, 555, 0],
[ 53, 94, 558, 0],
[ 88, 95, 554, 0],
[132, 94, 536, 2],
[178, 91, 503, 7],
[219, 86, 453, 15],
[252, 82, 390, 24],
[273, 77, 317, 36],
[279, 72, 240, 44],
[270, 69, 165, 49],
[247, 69, 102, 48],
[214, 73, 55, 41],
[173, 83, 23, 30],
[132, 98, 5, 19],
[ 93, 121, 0, 10],
[ 59, 150, 0, 3],
[ 34, 186, 0, 0],
[ 17, 227, 0, 0],
[ 6, 271, 0, 0],
[ 1, 315, 0, 0],
[ 0, 354, 0, 0],
[ 0, 384, 0, 5],
[ 0, 404, 0, 13],
[ 0, 413, 0, 25],
[ 0, 411, 0, 39],
[ 0, 398, 0, 55],
[ 0, 378, 0, 67],
[ 0, 350, 0, 75],
[ 0, 315, 0, 76],
[ 0, 276, 9, 72],
[ 0, 235, 28, 64],
[ 0, 198, 60, 53],
[ 2, 164, 107, 42],
[ 13, 139, 172, 30],
[ 36, 120, 242, 20],
[ 78, 109, 310, 12],
[143, 103, 367, 7],
[233, 101, 404, 3],
[344, 101, 414, 1],
[467, 103, 394, 0],
[591, 103, 350, 0],
[702, 100, 287, 0],
[786, 94, 215, 0],
[831, 84, 144, 0],
[833, 70, 86, 0],
[792, 54, 44, 4],
[713, 38, 17, 16],
[606, 24, 4, 36]], dtype=int64)
解决方案
感谢您发布示例数据。
首先依次对四列中的每一列进行傅立叶变换。arr
上面是你的数据。
import numpy as np
import matplotlib.pyplot as plt
t=np.arange(0, arr.shape[0])
plt.figure()
for icol,col in enumerate(arr.T):
sigFFT = np.fft.fft(col) / t.shape[0]
freq = np.fft.fftfreq(t.shape[0], d=1)
plt.plot(freq,sigFFT)
(对于没有标签等深表歉意)
您可以看到 PSF(广泛的功能)。装上信封以获得 PSF。您期待什么形状的 PSF?尝试 sinc 或类似的。
推荐阅读
- syslog - NXLog 总是在磁盘上转发文件(即使它没有改变)
- php - PHP ImagickDraw 线程化
- java - 如何将值从一个网站转移到另一个网站(Spring Boot - Angular)?
- java - 使用 ResultSet.getString() 或 ResultSet.getTimestamp() 获取时间戳更好吗?
- mysql - 如何将一个容器中的 mysql 数据库绑定到另一个运行我的 django 博客应用程序的容器(使用 docker-compose)
- sql-server - 如何将此格式化的 txt 文件导入 SQL Server 表
- sql - SQL 代码中带有外键的 SQL 名称错误
- r - Shiny 中 DT::RenderDataTable 中的颜色代码单元格
- python - 如何使用 Pandas 改进具有可迭代最大值的新列的巨大代码?
- python - 当我调用函数 def 时出现错误,因为_you_watched 错误是 sample() 缺少 1 个必需的位置参数:'k'