ECG心电信号处理:使用WFDB对MIT-BIH数据集进行读取(Python)

MATLAB中WFDB库的安装与简单使用 MATLAB中WFDB库的安装与简单使用wfdb库的下载wfdb库的安装wfdb库的使用 wfdb库的下载 wfdb库的安装 wfdb库的使用 阅读详情
AI摘要

本文介绍如何使用WFDB-python工具读取MIT-BIH心电数据集,涵盖心电信号数据读取、注释解析及波形绘制,深入分析record和annotation数据结构。

本文的主要内容是详细介绍MIT-BIH心电数据集的读取,主要使用WFDB-python工具进行操作,能够读取心电信号数据到array中,读取annotations以及使用matplotlib绘制相应的心电信号波形,并对record和annotation数据结构进行简单的分析。

声明:本博客的内容来源于各大论文和互联网,其正确性有待考究。目的仅仅为了记录一下本人的学习过程,如果正好也能对你有一点帮助或者发现文中的错误所在,非常欢迎留言交流呀。 


0 安装WFDB

 github地址为https://github.com/MIT-LCP/wfdb-python

可以直接下载zip包到本地研读一下源码,了解其数据结构。根据其提供的安装教程,直接使用pip安装就行:

 pip install wfdb

耐性等待几分钟,很快就能安装成功。之后便可以进行测试:

import wfdb


# 显示所有的标注格式
wfdb.show_ann_classes()

运行以上代码后,会打印出annotation的后缀以及标注的类型,安装成功。

1 读取record

读取record是使用wfdb的rdrecord函数实现:

# 读取一条记录的心电数据前10000个数据点
record = wfdb.rdrecord('data/MIT-BIH/100', sampfrom=0, sampto=10000, physical=False, channels=[0, 1])

以上示例中,第一个参数是我本地文件的文件地址,整个函数的返回值为一个wfdb中定义的record对象,接下来看一下这个record对象的数据结构。找到刚刚下载的源码,找到record.py文件,该文件中定义的是record类,其申明和初始化如下:

class Record(BaseRecord, _header.HeaderMixin, _signal.SignalMixin):
    def __init__(self, p_signal=None, d_signal=None,
                 e_p_signal=None, e_d_signal=None,
                 record_name=None, n_sig=None,
                 fs=None, counter_freq=None, base_counter=None,
                 sig_len=None, base_time=None, base_date=None,
                 file_name=None, fmt=None, samps_per_frame=None,
                 skew=None, byte_offset=None, adc_gain=None,
                 baseline=None, units=None, adc_res=None,
                 adc_zero=None, init_value=None, checksum=None,
                 block_size=None, sig_name=None, comments=None):
        ...
    ...

这里主要说明几个比较重要经常使用的属性如下(根据我自己的理解,其余的根据自己需要阅读源码即可):

p_signal:模拟信号值,储存形式为ndarray或者是list(在_signal.py中定义的)

d_signal:数字信号值,储存形式为ndarray或者是list(在_signal.py中定义的)

fs:采样频率,int类型的;

这些属性都能直接进行访问,比如需要访问记录的心电信号的数据,直接record.d_signal就能读取到数组或者list中。

现在回到刚刚的rdrecord上来,其申明如下:

def rdrecord(record_name, sampfrom=0, sampto=None, channels=None,
             physical=True, pb_dir=None, m2s=True, smooth_frames=True,
             ignore_skew=False, return_res=64, force_channels=True,
             channel_names=None, warn_empty=False):
    ...

下面解释一下常用重要参数:
record_name : str,储存心电信号的路径;
sampfrom : int, optional,默认为0;
sampto : int, or 'end', optional;长度;
channels : list, optional;选择读取某个通道的数据,默认读取全部通道;
physical : bool, optional;如果为True则读取p_signal,如果为False则读取d_signal,默认为False;
pb_dir : str, optional;该地址如果填写,则从Physiobank网站上下载数据,例如:pb_dir='mitdb'.

下面我们可以尝试绘制一下心电图的波形:

import wfdb
import matplotlib.pyplot as plt

# 读取本地的100号记录,从0到25000,通道0
record = wfdb.rdrecord('data/MIT-BIH/100', sampfrom=0, sampto=25000, physical=False, channels=[0, ])
print("record frequency:" + str(record.fs))
# 读取前1000数据
ventricular_signal = record.d_signal[0:1000]
print('signal shape: ' + str(ventricular_signal.shape))
# 绘制波形
plt.plot(ventricular_signal)
plt.title("ventricular signal")
plt.show()

效果如下所示:

ok,简单的数据读取就差不多了,当然有很多高级的用法,后面可能会用到,可以多看看源码和Physiobank。

2 读取annotation

这个标注信息我在官网看了一天,开始真的是一头雾水,后面才慢慢的了解其结构。首先我们打印一下标注的符号类型:

wfdb.show_ann_labels()

会打印出各种符号代表的心率类型如下,一共有41种类型的标注:

    label_store symbol                                    description
0             0                              Not an actual annotation
1             1      N                                    Normal beat
2             2      L                  Left bundle branch block beat
3             3      R                 Right bundle branch block beat
4             4      a                Aberrated atrial premature beat
5             5      V              Premature ventricular contraction
6             6      F          Fusion of ventricular and normal beat
7             7      J              Nodal (junctional) premature beat
8             8      A                   Atrial premature contraction
9             9      S     Premature or ectopic supraventricular beat
10           10      E                        Ventricular escape beat
11           11      j                 Nodal (junctional) escape beat
12           12      /                                     Paced beat
13           13      Q                            Unclassifiable beat
14           14      ~                          Signal quality change
16           16      |                     Isolated QRS-like artifact
18           18      s                                      ST change
19           19      T                                  T-wave change
20           20      *                                        Systole
21           21      D                                       Diastole
22           22      "                             Comment annotation
23           23      =                         Measurement annotation
24           24      p                                    P-wave peak
25           25      B              Left or right bundle branch block
26           26      ^                      Non-conducted pacer spike
27           27      t                                    T-wave peak
28           28      +                                  Rhythm change
29           29      u                                    U-wave peak
30           30      ?                                       Learning
31           31      !                       Ventricular flutter wave
32           32      [      Start of ventricular flutter/fibrillation
33           33      ]        End of ventricular flutter/fibrillation
34           34      e                             Atrial escape beat
35           35      n                   Supraventricular escape beat
36           36      @  Link to external data (aux_note contains URL)
37           37      x             Non-conducted P-wave (blocked APB)
38           38      f                Fusion of paced and normal beat
39           39      (                                 Waveform onset
40           40      )                                   Waveform end
41           41      r       R-on-T premature ventricular contraction

我们试着来读取一条标注:

# 读取第100条记录的annotation,前1000个点
signal_annotation = wfdb.rdann("data/MIT-BIH/100", "atr", sampfrom=0, sampto=1000)
# 打印标注信息
print("chan: " + str(signal_annotation.chan))
print("sample: " + str(signal_annotation.sample))
print("symbol: " + str(signal_annotation.symbol))
print("aux_note: " + str(signal_annotation.aux_note))

将annotation常用的一些属性打印出来,其中:

chan:是chanel的意思,保存的是当前标注的是哪一个通道,为一个ndarray或者是list

sample:这里记录的是每个心拍中R波的位置信息,为一个ndarray或者是list

symbol:记录的是每个心拍的标注信息,记录的是每个心拍的类型,是一个字符型的ndarray或者是list,其内容为wfdb.show_ann_labels()的symbol类型;

aux_note:记录的是心率变换点的标注类型,是辅助信息,其内容为:

(来自官网)

下面我们来详细的看一看rdann()函数,其申明为:

def rdann(record_name, extension, sampfrom=0, sampto=None, shift_samps=False,
          pb_dir=None, return_label_elements=['symbol'],
          summarize_labels=False):
    ...
    ...



"""
使用示例:
    --------
    >>> ann = wfdb.rdann('sample-data/100', 'atr', sampto=300000)

"""

对于其中重要一点的参数:

record_name:标注文件的地址,比如说文件是“100.atr”,则该参数为record_name=“100”;

extension:标注文件的格式类型

然后其余参数可以参看rdrecord函数中的相关参数即可。

下面简单的将心拍绘制到心电图上:

import wfdb
import matplotlib.pyplot as plt

# 读取本地的100号记录,从0到25000,通道0
record = wfdb.rdrecord('data/MIT-BIH/100', sampfrom=0, sampto=25000, physical=False, channels=[0, ])
print("record frequency:" + str(record.fs))
# 读取前1000数据
ventricular_signal = record.d_signal[0:1000]
print('signal shape: ' + str(ventricular_signal.shape))
# 绘制波形
plt.plot(ventricular_signal)
plt.title("ventricular signal")

# 读取annotations
signal_annotation = wfdb.rdann("data/MIT-BIH/100", "atr", sampfrom=0, sampto=1000)
# 将读取到的annotations的心拍绘制到心电图上
for index in signal_annotation.sample
    plt.scatter(index, ventricular_signal[0][index], marker="*")
plt.show()

当然绘制波形也可以使用wfdb的库函数,可以使用wfdb.plot_wfdb()函数即可,其申明如下:

def plot_wfdb(record=None, annotation=None, plot_sym=False,
              time_units='samples', title=None, sig_style=[''],
              ann_style=['r*'], ecg_grids=[], figsize=None, return_fig=False):

详细使用请直接参看源码中的注释即可。

3 数据集详细分析

要详细了解每条记录的详细信息的话,直接在官网上有的,地址是:MIT-BIH Arrhythmia Database Directory

里面详细的记录了每条记录主要心率类型,以及每条记录中各种类型心率的时长,使用的导联等,一般想要的数据集的信息都可以中在这里面找到。


参考文献

[1] physioNet PhysioNet


附录

在使用physionet时,导航菜单在左上角,其中主要用到的是Physiobank和PhysioToolkit两项,前一项包含数据库等,后一项是关于WFDB工具库的。

5分钟搞定MIT-BIH心电数据预处理:用Python和wfdb库快速提取ECG信号 本文详细介绍了如何使用Python和wfdb库快速处理MIT-BIH心电数据,完成从原始ECG信号读取、小波去噪到心拍分割的完整预处理流程。文章还探讨了如何利用PyTorch构建RNN等深度学习网络进行心拍分类,为构建心电信号智能识别系统提供了实战指南。 阅读详情

相关推荐

3种 MIT-BIH 数据集加载方案对比:PhysioNet ATM、WFDB 库与 Kaggle CSV

本文深度对比了MIT-BIH心律失常数据集的三种加载方案:PhysioNet ATM官方工具、WFDB Python库和Kaggle预处理CSV文件。针对医疗AI和心电分析领域,详细解析了各方案的优劣、适用场景及工程实践技巧,帮助开发者根据项目需求选择最优数据加载策略,提升工作效率。

weixin_33910460的博客 339

使用Python+TensorFlow2构建基于卷积神经网络(CNN)的ECG心电信号识别分类(二)

心律失常数据库 目前,国际上公认的标准数据库包含四个,分别为美国麻省理工学院提供的MIT-BIH(Massachusetts Institute of Technology-Beth Israel Hospital Database, MIT-BIH)数据库、美国心脏学会提供的AHA( American heart association,AHA)数据库、欧共体CSE( Common Standa...

qq_43750573的博客 1万+

用Python搞定PhysioNet ECG睡眠数据:从WFDB库读取到R点标注的完整实战教程

本文提供了一份完整的Python实战教程,教你如何使用WFDB库处理PhysioNet ECG睡眠数据,从数据读取到R点标注解析。涵盖环境配置、数据集选择、信号处理、标注质量验证及可视化分析,适合心电信号研究和睡眠分期分析的开发者与研究者。

weixin_30296405的博客 195

wfdb使用说明

rdrecord的使用: import matplotlib.pyplot as plt import wfdb record = wfdb.rdrecord('sample-data/a103l') plt.plot(record.p_signal[0: 500, 0]) plt.plot(record.p_signal[500: 1000, 1]) plt.plot(record.p_sig...

变化匿名的博客 1万+

从MIT-BIH心律失常数据库获取数据的Python方法

MIT-BIH心律失常数据库是一个广泛使用的心电图数据库,包含了来自不同患者的心电图记录,用于研究和分析心律失常。首先,我们需要安装wfdb库,它是一个用于读取MIT-BIH数据库的Python包。在上面的示例中,我们读取了名为"100"的心电图记录的第一个通道数据。除了心电图数据外,MIT-BIH数据库还提供了注释信息,用于标记心律失常事件的发生时间和类型。一旦数据库记录被下载和解压缩,我们可以使用wfdb库中的函数来读取心电图数据。一旦数据库记录被读取,我们可以使用matplotlib库来绘制心电图。

HackNebulaZ的博客 1349

ECG心电信号处理:使用WFDB读取MIT-BIH数据集

在心电信号处理领域,MIT-BIH数据集是一个广泛使用的标准数据集,它包含了来自不同心脏状况下的多个心电图记录。通过以上的代码示例,我们可以使用WFDB库轻松地读取MIT-BIH数据集中的心电图记录。首先,确保你已经下载了MIT-BIH数据集的文件,并将它们保存在本地的指定目录下。在函数中,我们指定了要读取的记录名称和数据集的路径。我们通过提供记录名称的列表来指定要读取的记录。在上面的代码中,我们首先设置了MIT-BIH数据集的路径。列表中,每个记录对应一个二维数组,其中包含了该记录的物理信号数据。

KxobDebugging的博客 1235

python处理心电图_ECG心电信号处理:使用WFDB对MIT-BIH数据集进行读取(Python)

本文的主要内容是详细介绍MIT-BIH心电数据集的读取,主要使用WFDB-python工具进行操作,能够读取心电信号数据到array中,读取annatations以及使用matplotlib绘制相应的心电信号波形,并对record和annatation数据结构进行简单的分析。声明:本博客的内容来源于各大论文和互联网,其正确性有待考究。目的仅仅为了记录一下本人的学习过程,如果正好也能对你有一点帮助或...

weixin_39645041的博客 4706

wfdb.tar.gz_ecg:心电信号分析的Linux开箱即用工作台

心电信号(ECG)是高精度时序生理数据,其解析依赖符合PhysioNet标准的WFDB工具链;WFDB作为开源的POSIX兼容C库,提供rdsamp、sqrs等命令行工具,实现无损读取.dat/.hea/.atr文件、QRS波检测与标注解析;在Linux环境下原生支持mmap与管道化处理,性能远超Windows模拟层;wfdb.tar.gz_ecg封装预编译二进制、环境配置与ECG专用参数,默认禁用EEG/EMG模块,解决GCC版本冲突、依赖混乱与路径污染问题;适用于医疗设备合规验证、生物医学教学及国产Li

weixin_28721917的博客 335

matlab读取西瓜数据集_ECG心电信号处理:使用WFDB对MIT-BIH数据集进行读取(Python)...

本文的主要内容是详细介绍MIT-BIH心电数据集的读取,主要使用WFDB-python工具进行操作,能够读取心电信号数据到array中,读取annatations以及使用matplotlib绘制相应的心电信号波形,并对record和annatation数据结构进行简单的分析。安装WFDB github地址为https://github.com/MIT-LCP/wfdb-python可以直接下载zi...

weixin_39784460的博客 917

MIT-BIH心电数据库解析:Python读取与预处理实战

在生物医学信号处理中,心电图(ECG)分析是数字信号处理与机器学习的重要应用领域。而MIT-BIH心律失常数据库作为全球公认的基准数据集,承载了专家逐拍标注的心电波形与类型信息,是验证算法性能的标准测试平台。理解其头文件、二进制信号与注释文件的三件套结构,掌握基于Python的wfdb工具库进行数据解析、滤波与R峰提取,不仅是复现论文的基础,更是工业级可穿戴心率监测、心律失常分类等工程落地的前提。从数据格式原理到一套可复用的预处理流程,本文面向信号处理初学者和算法工程师,提供一套围绕MIT-BIH的完整实操

weixin_29056145的博客 293

WFDB源码编译与心电信号解析实战指南

WFDB(Waveform Database)是MIT开发的生理信号处理核心C库,专为高精度、临床级心电(ECG)数据读取与分析设计。其原理基于头文件(.hea)驱动的元数据-信号耦合机制,通过采样率、增益、基线等参数实现ADC值到电压的无损标定。技术价值在于提供经30年AHA/ACC验证的命令行工具链(如rdsamp、xqrs)和可嵌入的动态库接口,支撑从科研分析到嵌入式医疗设备的全场景需求。典型应用场景包括MIT-BIH数据库解析、Holter高采样率数据处理、Linux下实时QRS检测及Python/

weixin_29611239的博客 267

cocos creator本地储存数据_ECG心电信号处理:使用WFDB对MIT-BIH数据集进行读取(Python)...

本文的主要内容是详细介绍MIT-BIH心电数据集的读取,主要使用WFDB-python工具进行操作,能够读取心电信号数据到array中,读取annatations以及使用matplotlib绘制相应的心电信号波形,并对record和annatation数据结构进行简单的分析。安装WFDB github地址为https://github.com/MIT-LCP/wfdb-python可以直接下载zi...

weixin_33217004的博客 640

wfdb-python:原生Python WFDB软件包

wfdb-python 介绍 原生Python波形数据库(WFDB)软件包。 一个用于读取,写入和处理WFDB信号和注释的工具库。 该软件包的核心组件基于原始WFDB规范。 此程序包不包含与原始WFDB程序包完全相同的功能。 它旨在通过用户友好的API来实现其尽可能多的核心功能。 随着时间的推移,还会添加其他有用的生理信号处理工具。 文档和用法 有关公共API,请参见。 有关更多示例用例,请参见笔记本文件。 安装 该发行版托管在pypi上,为: ://pypi.python.org/pypi/wfdb/。 要直接从pypi安装软件包而不需要显式下载内容,请从终端运行: $ pip install wfdb 开发版本托管在: : 。 该存储库还包含演示脚本和示例数据。 要安装开发版本,请克隆或下载存储库,导航至基本目录,然后运行: $ pip install . 发展 开发资料

python MIT-BIH 数据集心拍分类 从R点提取到19类R点心拍分类到AAMI标准5分类的数据集打包实现 良心详解版 全网唯一

python MIT-BIH 心拍分类实现 前言 这可能是我自认为写的最难的一篇文章,对于所有做心电信号分类的同学来说这都是一大关一下所有的代码都是自己手敲的,这整个过程很复杂,按照我一贯的思路,我会写的很详细一是日后方便复习,二是自己看论文也好看文章也罢,好多都是囫囵半片,看了跟没看似的,所以自己一定要写的很详细,一是自己对理论的一种梳理和理解,二是给相关的研究者提供清晰的思路,三是希望能给学弟学妹们做个榜样接下来进入正题 一.本文的主要内容和研究思路 首先不管对于机器学习还是深度学习,不管你最后要做的是

一个学长的博客 1万+

SAP ABAP BAPI_PRODORD_CHANGE:动态刷新PP主数据的实战解析

本文深入解析了在SAP ABAP开发中,如何利用BAPI_PRODORD_CHANGE函数实现生产订单PP主数据的动态刷新。针对CO02事务码无法满足的后台自动化场景,详细讲解了通过设置explosion_date和explode_new等关键参数来强制重新读取BOM和工艺路线的实战方法,并提供了核心代码示例与避坑指南,确保生产订单信息与最新主数据同步。

weixin_29231027的博客 149

雨雾天YOLOv8检测拉胯?暗通道去雾+上下文注意力双优化,mAP从58%飙到79%,暴雨也能看清车牌

室外交通监控:高速、省道的雨雾天检测,重点解决小车、货车漏检;车载ADAS系统:雨天行车时的前方车辆、行人识别,需实时性(<40ms);隧道出入口:明暗交界+雾天的复杂场景,暗通道能平衡亮度。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1380

Python中的WFDB库使用

Python中的WFDB库使用Demo1:使用'rdsamp'函数读取数据并画图 读取的库的内容主要是MITDB和NSTDB(噪音压力测试库) Physionet ATM:https://physionet.org/cgi-bin/atm/ATM Demo1:使用’rdsamp’函数读取数据并画图 import wfdb import matplotlib.pyplot as plt signa...

weixin_44191286的博客 2万+

AEJoy —— 最受欢迎的 5 个 Ae 表达方式

NOTE] 原文作者我意识到表达式可能令人生畏,有些人宁愿复制粘贴有用的代码,而不愿学习这门语言。对此我完全理解。因此,我想与您分享我的。这些是我几乎在每个项目中都会使用的表达式,我认为它们极大地提升了工作流程。

ShaderJoy 的兴趣技术杂货铺 364

【ECG信号的储存及读取方式详解】数据集MIT-BIH,212格式存储

MIT-BIH公开数据集下载地址如下: MIT-BIH Arrhythmia Database v1.0.0 (physionet.org)https://www.physionet.org/content/mitdb/1.0.0/可以知道,心电数据的储存通常通过三个类型的文件,

qq_32793161的博客 5694

Linux下搭建简易的HTTP服务器完成图片显示

篇文章作为Linux下socket(TCP)网络编程的练习,使用C语言代码搭建一个简单的HTTP服务器,完成与浏览器之间的交互,最终在浏览器上显示一张图片;通过这个例子可以巩固socket里多线程使用,也可以方便学习了解HTTP协议。

2588

第1集:面试官视角:AIOps 核心能力模型与面试项目全局搭建【免费试读】

本文介绍了一门面向AIOps工程师的面试实战课程,针对当前运维领域薪资差距明显的痛点,帮助学员系统掌握企业级AIOps平台开发能力。课程承诺提供可直接用于面试和生产环境的代码实现,从零构建模块化AIOps平台。第一集重点讲解了面试官视角下的核心能力模型,并指导学员搭建项目基础环境,包括Python虚拟环境配置、本地大模型部署(Ollama)以及智能巡检Agent的代码实现。课程强调实战导向,通过40集系统讲解,帮助学员实现薪资40-60万的职业跃升。

qq_2937655951的博客 616

wfdb-python与MIT-BIH数据库:下载、解析与应用指南

**wfdb-python** 是一个强大的Python工具包,专门用于处理生理信号数据,特别是**MIT-BIH数据库**中的心电图记录。本文将为您详细介绍如何使用这个工具包下载、解析和应用这些宝贵的医疗数据资源。 ## 📊 什么是wfdb-python? wfdb-python是一个原生的Python波形数据库包,它实现了WFDB(Waveform Database)标准的完整功能。WF

gitblog_00799的博客 514

Allegro Design Entry HDL(OrCAD Capture HDL)原理图是设计快速入门图文教程

Allegro Design Entry HDL是Cadence公司开发的原理图设计工具,也可与Allegro PCB设计工具无缝对接,虽然板级开发中不如Design Entry CIS(又名 OrCAD Capture CIS)的使用那么广泛,但是由于Design Entry HDL支持芯片的开发,所以有不少公司尤其是芯片背景公司,选择使用Design Entry HDL进行原理图设计。两个原理图开发工具的使用方法大同小异,本文简单介绍使用Allegro Design Entry HDL开始一个新的设计,

fydar的博客 4131

使用VS2022WFDB读取ECG信号(Python)

使用wfdb库读取ecg信号的utf-8报错解决方法

qq_67328524的博客 814

使用PostgreSQL构建高可用数据库集群

在现代企业级应用中,数据库的高可用性已成为业务连续性的核心要求。PostgreSQL作为一款功能强大的开源关系型数据库,其高可用架构的设计直接影响着系统的稳定性和可靠性。

九天的专栏 1260

ABAP链接外围数据库SQL实战案例

这是一个ABAP 直接读取SQL数据库数据的实例,以此种方式可以将SAP与外围的系统做一些集成,比如生产,SAP本身生产这部分是弱项,管不了那么细,很多车间的数据都是在MES系统,如管理上需要则可以将MES的一些数据自动读取过来,结合SAP本身的业务数据,做一些分析是比较方便的。 1、首先在SAP里建立数据库链接:DBCO ,直接增加一条记录,填上数据库的相关信息:IP地址、数据库名、账号SA、密码这些。 2、开发程序,设置成自动运行的计划,固定时间自动读取SQL里的数据,保存到SAP自定义表.

heng0757的专栏 1511
上一篇: ECG心电信号处理:初识ECG
下一篇: RS法计算Hurst指数
juicetech
博客等级 码龄8年 66粉丝 5原创
评论 21
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值