You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

不同采样率双数据集峰对齐绘图及无丢峰采样优化问询

解决不同采样率数据集的峰对齐问题

核心思路是以峰的位置为锚点,先定位峰坐标再进行对齐插值,利用峰数量一致的前提实现精准匹配,同时保留原始数据的所有特征。

具体步骤:

  • 提取峰的时间坐标
    用峰值检测工具(比如Python的scipy.signal.find_peaks)分别找出两个数据集的峰位置。如果原始数据没有时间戳,就用采样率换算:时间 = 采样点索引 / 采样率。因为峰数量一致,直接按顺序一一对应两个数据集的峰(第1个峰对应第1个,以此类推)。

  • 构建统一的对齐时间轴
    可以选择其中一个数据集的峰时间作为基准,或者取对应峰时间的平均值作为对齐后的峰坐标。然后把两个原始数据集的所有时间点、对齐后的峰点合并,排序后生成覆盖全范围的统一时间轴——这样既保证峰对齐,又不会丢失原始数据的细节。

  • 插值重采样到统一轴
    用三次样条插值(比线性插值更贴合原始曲线)将两个数据集映射到统一时间轴上。插值时要基于原始所有采样点,不能只保留峰点,否则会丢失峰之间的波形特征。
    示例代码:

    import numpy as np
    from scipy.interpolate import interp1d
    from scipy.signal import find_peaks
    
    # 假设输入数据:data1/fs1 对应第一个数据集,data2/fs2 对应第二个
    t1 = np.arange(len(data1)) / fs1
    t2 = np.arange(len(data2)) / fs2
    
    # 检测峰的位置并转换为时间戳
    peaks1_idx, _ = find_peaks(data1)
    peaks2_idx, _ = find_peaks(data2)
    peaks1_t = t1[peaks1_idx]
    peaks2_t = t2[peaks2_idx]
    
    # 生成对齐后的峰时间(这里取对应峰的平均时间,也可以直接用其中一方的时间)
    aligned_peaks_t = (peaks1_t + peaks2_t) / 2
    
    # 构建包含所有关键节点的统一时间轴
    combined_t = np.unique(np.concatenate([t1, t2, aligned_peaks_t]))
    combined_t.sort()
    
    # 插值得到对齐后的数据集
    f1 = interp1d(t1, data1, kind='cubic', fill_value="extrapolate")
    f2 = interp1d(t2, data2, kind='cubic', fill_value="extrapolate")
    aligned_data1 = f1(combined_t)
    aligned_data2 = f2(combined_t)
    
  • 验证对齐效果
    绘制插值后的两个数据集,检查每个峰的位置是否重合;也可以计算对应峰的时间差,确保误差在可接受范围内。如果峰仍有偏移,直接改用其中一个数据集的峰时间作为基准即可。

内容的提问来源于stack exchange,提问作者thaneshwari

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 14:22:33