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

如何在Python或MATLAB中对ECG信号实现上下采样至300Hz

ECG信号采样率统一至300Hz的实现方案

以下分别给出Python和MATLAB的实现方法:

Python实现

使用scipy库的信号处理模块完成重采样操作,代码如下:

import numpy as np
from scipy.signal import resample, resample_poly

# 输入参数定义:ecg_500为500Hz原始信号数组,ecg_257为257Hz原始信号数组
fs1_original = 500
fs2_original = 257
fs_target = 300

# 第一路500Hz下采样至300Hz
# 方式1:FFT重采样,适用于所有比例场景
len1_original = len(ecg_500)
len1_target = int(np.round(len1_original * fs_target / fs1_original))
ecg_300_ch1 = resample(ecg_500, len1_target)

# 方式2:多相滤波重采样,仅适用于有理比例场景(300/500=3/5),效率更高、波形失真更小
# ecg_300_ch1 = resample_poly(ecg_500, up=3, down=5)

# 第二路257Hz上采样至300Hz
len2_original = len(ecg_257)
len2_target = int(np.round(len2_original * fs_target / fs2_original))
ecg_300_ch2 = resample(ecg_257, len2_target)

小提示:如果对ECG波形保真要求高,可在重采样前先对原始信号做0.5~40Hz的带通滤波,避免重采样过程引入混叠或高频噪声。

MATLAB实现

使用MATLAB内置的resample函数即可完成操作,该函数默认自带线性相位抗混叠FIR滤波器,对ECG这类相位敏感的生物信号适配性好:

fs1_original = 500;
fs2_original = 257;
fs_target = 300;

% 第一路500Hz下采样至300Hz,直接传入上下采样有理系数
ecg_300_ch1 = resample(ecg_500, 3, 5);

% 第二路257Hz上采样至300Hz
ecg_300_ch2 = resample(ecg_257, 300, 257);

小提示:重采样后可通过对比两路信号的时间轴范围,验证重采样长度是否匹配,避免时间对齐偏差。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 05:54:03