【发布时间】:2020-12-22 22:45:03
【问题描述】:
我正在计算具有不规则形状的光曲线的半高全宽。我现在的方法是
- 将样条曲线 (
scipy.interpolate.UnivariateSpline) 拟合到数据(减去最大值的一半,因此 y = 0 是最大值的一半) - 找到样条的根 (
UnivariateSpline.roots()) - 找出第一个根和最后一个根之间的差异以确定曲线在半最大值处的宽度
roots 方法仅适用于三次样条,但我需要样条是线性的,否则我会得到如下图所示的结果(由于数据点的间距)。我应该注意,我正在处理数百个数据集,因此手动选择这些“根”不太可行。
有没有人有任何技巧来找到 linear 样条曲线(或给定 y 值的所有 x 值)的根?非常感谢!
【问题讨论】:
-
你可以循环遍历 y 值来找到 y[n]
half (反向交叉)?然后只需线性插值即可得到 y == half 处的 x 值。
标签: python scipy signals interpolation