我正在分析两条交叉线(如+号)的图像,并提取一条垂直于其中一条线的像素线(一个nx1
numpy数组)。这给了我一个浮点值数组(代表颜色),然后我可以绘制。我用matplotlib绘制数据,得到了一堆180到200之间的噪音数据,中间有一个明显的峰值,峰值可以降到100左右。
我需要找到这些数据的一半。我想我需要先过滤噪声,所以我使用了高斯滤波器,它平滑了我的数据,但在顶部仍然不是超平坦的。
我想知道是否有更好的方法来过滤数据。
我怎样才能找到这些数据的半高宽?
如果可能的话,我只想使用numpy、scipy和matplotlib。
原始数据如下:
以下是筛选的数据:
我最终没有使用任何过滤器,而是使用原始数据。 我使用的程序是:
difference = max(arr_y) - min(arr_y)
HM = difference / 2
nearest = (np.abs(arr_y - HM)).argmin()
我不知道(或认为)这是最好的方法,但它的工作,似乎是相当准确的比较。
你的脚本已经进行了正确的计算。
但是,当取
nearest_above
和nearest_below
之间的距离时,可以减少nearest
和pos_extremum
之间距离的误差,即两边极值(最大值/最小值)的一半位置。在这个例子中,你应该得到FWHM和标准差之间的关系:
FWHM = 2.355
乘以Wikipedia中提到的标准偏差(这里是1)。相关问题 更多 >
编程相关推荐