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

WFDB库调用ann2rr函数报AttributeError:无该属性的技术求助

解决方法

1. 确认WFDB版本

先执行以下代码查看当前WFDB版本:

import wfdb
print(wfdb.__version__)

2. 新版本WFDB(≥4.0)提取RR间期的正确流程

当前你安装的WFDB新版本已移除ann2rr函数,需改用标准流程:先读取标注文件,提取R峰位置后计算RR间期,代码示例如下:

from IPython.display import display
import matplotlib.pyplot as plt
%matplotlib inline
import numpy as np
import wfdb

# 读取记录文件
path = 'C:/Users/user/Downloads/bidmc-congestive-heart-failure-database-1.0.0/files/chf09'
record = wfdb.rdrecord(path) 
# 读取标注文件(注意标注文件扩展名通常为'atr',而非'ecg',需匹配实际文件)
annotation = wfdb.rdann(path, extension='atr')

# 筛选正常QRS波对应的样本点位置(标注符号'N'代表正常心跳)
r_peaks = annotation.sample[np.array(annotation.symbol) == 'N']

# 计算RR间期(单位为样本点,可转成毫秒)
rr_intervals = np.diff(r_peaks)
# 转成毫秒:采样频率从record.fs获取
rr_intervals_ms = rr_intervals / record.fs * 1000

# 输出结果
print("RR间期(样本点):", rr_intervals)
print("RR间期(毫秒):", rr_intervals_ms)

3. 若需使用旧版ann2rr函数

如果必须依赖原ann2rr接口,可安装指定旧版本WFDB:

pip uninstall wfdb -y
pip install wfdb==3.4.0

安装完成后即可调用,注意修正标注扩展名参数:

res = wfdb.ann2rr(path, 'atr', as_array=True)

关键提示

  • 标注文件的标准扩展名是atr,你代码中写的ecg是信号文件的扩展名,这也是潜在问题点。
  • 新版本WFDB通过标注对象处理的方式灵活性更高,更推荐使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 11:53:16