跳转至

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>):下载指定数据库中的所有文件。下载位置为:
    <Project>/
    ├── main.py                <-- 你的运行脚本
    └── <save_dir>/                  <-- 这是你设置的 save_dir
        ├── 100.hea            <-- 自动下载的头文件
        └── 100.dat            <-- 自动下载的数据文件
    
  • 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),包含了关于这些波峰的其他信息(前提是你设置了额外的参数)。