库¶
os¶
os 模块提供了与操作系统进行交互的功能,可以用于文件和目录的操作、环境变量的访问等。
os 模块的常用功能包括:
os.path:提供了用于处理文件路径的函数,如os.path.join(<path1> + <path2>)(将目录名和文件名合并成一个完整的路径)、os.path.exists(<path>)(检查路径是否存在)、os.path.basename(<path>)(获取文件名)等。os.makedirs(<path>, exist_ok=True):创建一个新的目录及其所有必要的父目录。如果exist_ok=True,则当目录已存在时不会抛出异常。
wfdb¶
wfdb(WaveForm DataBase)是一个用于处理生理信号数据的库,特别适用于心电图(ECG)等生理信号的读取、处理和分析。它提供了方便的接口来访问和操作各种生理信号数据库,如 MIT-BIH 心电数据库。
wfdb 的主要功能包括:
wfdb.dl_database(<db_name>, dl_dir=<save_dir>):下载指定的生理信号数据库。wfdb.dl_files(<db_name>, dl_dir=<save_dir>):下载指定数据库中的所有文件。下载位置为:wfdb.rdrecord(<record_path>):读取生理信号记录,返回一个包含信号数据和元数据的对象。wfdb.plot_wfdb(<record>):用于可视化生理信号数据。wfdb.processing:提供了一些信号处理工具,如滤波、峰值检测等。wfdb.io:提供了输入输出功能,可以读取和写入各种生理信号数据格式。wfdb.annotation:用于处理生理信号的注释数据,如心电图中的心拍事件标记等。
matplotlib¶
matplotlib 是一个用于创建静态、动态和交互式可视化图表的 Python 库。它提供了丰富的功能来绘制各种类型的图表,如线图、散点图、柱状图等。
matplotlib 的主要功能包括:
matplotlib.pyplot.figure(<figsize> = (x, y)):创建一个新的图形对象。matplotlib.pyplot.plot(<x>, <y>):绘制线图。matplotlib.pyplot.xlabel(<label>):设置 x 轴标签。matplotlib.pyplot.ylabel(<label>):设置 y 轴标签。matplotlib.pyplot.title(<title>):设置图表标题。matplotlib.pyplot.grid(<bool>, linestyle=<style>, alpha=<alpha>):显示或隐藏网格线,alpha 控制透明度。matplotlib.pyplot.scatter(x, y, color=<color>, marker=<marker>, zorder=<zorder>, label=<label>):绘制散点,可以设置颜色、标记样式、图层顺序和图例标签。matplotlib.pyplot.legend():显示图例。
numpy¶
numpy 是一个用于科学计算的 Python 库,提供了高效的多维数组对象和各种数学函数。它是许多数据分析和机器学习库的基础。
numpy 的主要功能包括:
numpy.arange([start], stop, [step]):创建等差数列数组(list)对象。numpy.linspace(start, stop, num):创建等间隔的数值数组。numpy.diff(arr):计算数组的离散差分。numpy.where(condition):返回满足条件的元素的索引(元组)。
scipy¶
scipy 是一个用于科学计算的 Python 库,提供了许多用于优化、线性代数、信号处理等领域的函数和工具。
scipy 的主要功能包括:
scipy.signal.butter(N, Wn, btype='bandpass', analog=False, fs=None):巴特沃斯滤波器。N (int): 滤波器的阶数,阶数越高,频带边缘的下降越陡峭。Wn (array_like): 临界频率序列[low, high]。btype: 必须设置为'bandpass'。fs (float): 信号的采样频率(单位通常为 Hz)。
scipy.signal.butter 在内部计算时,默认期望输入的截止频率是一个在 0 到 1 之间 的相对数值:
- 0:对应 0 Hz(直流分量)。
- 1:对应尼奎斯特频率。
因此,Wn 中的频率值需要先除以 Nyquist 频率(采样频率的一半)进行归一化处理。
该函数返回一个包含两个数组的元组:(b, a)。这两个数组定义了滤波器的传递函数,
-
b (numerator): 滤波器的分子系数数组。
-
a (denominator): 滤波器的分母系数数组。
-
scipy.signal.filtfilt(b, a, x):使用零相位滤波器对信号进行滤波,避免相位失真。 -
scipy.signal.find_peaks(x, height, distance):在一维数组中找到局部峰值。height: 峰值的最小高度,distance: 峰值之间的最小距离(以样本数为单位)。返回一个元组:
第一个返回值 (peaks):一个包含所有检测到的波峰索引(位置)的数组。这是最核心的数据。
第二个返回值 (properties):一个字典 (Dictionary),包含了关于这些波峰的其他信息(前提是你设置了额外的参数)。