You need to enable JavaScript to run this app. Python中如何对采样率不同的两路信号进行相关性计算
优惠活动
大模型
产品
解决方案
定价
更多

Python中如何对采样率不同的两路信号进行相关性计算

Python实现不同采样率信号相关性计算方案

前提说明

两路信号采样时间完全对齐,示波器50KHz采样率是自有系统10KHz的5倍整数倍,无需额外做时间插值对齐,仅需对高采样率信号做降采样处理即可。

实现步骤

  • 第一步:导入依赖库
import numpy as np
from scipy import signal
  • 第二步:加载两路原始信号
    假设已将采集到的信号读取为一维数组:sig_50k 对应示波器50KHz采集的信号,sig_10k 对应自有系统10KHz采集的信号。首先验证信号时长对齐:相同采集时长下sig_50k的长度应为sig_10k的5倍。
  • 第三步:对高采样率信号做降采样处理
    可选两种处理方式:
    1. 整数倍采样率适配方案:抽点法或滑动平均法(平均法抗混叠效果更优)
    # 直接抽点法:每5个点取1个
    sig_50k_downsampled = sig_50k[::5]
    # 平均法:每5个点取均值,降低噪声影响
    sig_50k_downsampled = sig_50k.reshape(-1,5).mean(axis=1)
    
    1. 通用重采样方案:适合非整数倍采样率场景
    target_len = len(sig_10k)
    sig_50k_downsampled = signal.resample(sig_50k, target_len)
    
  • 第四步:计算相关性
    1. 皮尔逊相关系数:单值输出,范围-1~1,越接近1说明线性正相关性越强
    # 可选先做去直流处理,避免偏移干扰结果
    sig_50k_downsampled = sig_50k_downsampled - np.mean(sig_50k_downsampled)
    sig_10k = sig_10k - np.mean(sig_10k)
    corr_coef = np.corrcoef(sig_50k_downsampled, sig_10k)[0,1]
    print(f"两路信号皮尔逊相关系数:{corr_coef:.4f}")
    
    1. 互相关序列:输出不同时延下的相关性结果,可用于排查信号时延偏差
    cross_corr = signal.correlate(sig_50k_downsampled, sig_10k, mode='full')
    # 归一化处理,结果范围-1~1
    cross_corr = cross_corr / (np.linalg.norm(sig_50k_downsampled) * np.linalg.norm(sig_10k))
    

注意事项

  • 如果两路信号采样率为非整数倍,需要先根据两路信号的时间戳做对齐,再通过插值将两路信号重采样到相同采样率后再计算相关性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 07:45:02