如何在原子力显微镜曲线中识别低区域斜率?
原子力显微镜力-距离曲线线性区域斜率识别问题
我有原子力显微镜的距离(d)和力(f)数据,绘制的XY曲线形态和数值略有差异,但整体相似。我尝试用numpy结合滑动窗口法识别曲线低区域的斜率,却没能成功——部分曲线数据点递增,部分则递减。
以下是我的示例代码:
def find_linear_part(d, f, window_size=120, min_slope=0.01): slope = 0 intercept = 0 fit = 0 min_residual = float('inf') for i in range(len(d) - window_size + 1): d_window = d[i:i + window_size] f_window = f[i:i + window_size] slope, intercept = np.polyfit(d_window, f_window, 1) y_fit = slope * d_window + intercept residual = np.sum((f_window - y_fit) ** 2) if residual < min_residual: min_residual = residual fit = (d_window, f_window) new_slope = slope new_intercept = intercept return fit, new_slope, new_intercept
我曾参考图中给出的部分斜率值设置过斜率阈值,示例预期曲线图如下:

数据文件:sample.txt(存储于GitHub仓库)
内容的提问来源于stack exchange,提问作者LeCroissant
相关产品推荐
相关产品推荐

