加载心电图作为一维信号的示例。
返回的信号是5分钟长的心电图(ECG),这是心脏电活动的医学记录,以360 Hz采样。
返回值:
ecg:ndarray以360赫兹采样的毫伏(mV)心电图。
注意:
提供的信号是摘录自(19:35至24:35)记录208MIT-BIH心律失常数据库提供的(MLII线索)[1]在PhysioNet上[2]。摘录包括噪声引起的伪像,典型的心跳以及病理变化。
1.1.0版中的新函数。
参考文献:
穆迪GB,马克RG。 MIT-BIH心律失常数据库的影响。 IEEE Eng in Med and Biol 20(3):45-50(May-June 2001)。 (PMID:11446209);DOI:10.13026 /C2F305
Goldberger AL,Amaral LAN,Glass L,Hausdorff JM,Ivanov PCh,Mark RG,Mietus JE,Moody GB,Peng C-K,Stanley HE。 PhysioBank,PhysioToolkit和PhysioNet:复杂生理信号新研究资源的组成部分。循环101(23):e215-e220;DOI:10.1161 /01.CIR.101.23.e215
例子:
>>> from scipy.misc import electrocardiogram
>>> ecg = electrocardiogram()
>>> ecg
array([-0.245, -0.215, -0.185, ..., -0.405, -0.395, -0.385])
>>> ecg.shape, ecg.mean(), ecg.std()
((108000,), -0.16510875, 0.5992473991177294)
如上所述,信号具有几个形态不同的区域。例如。前几秒钟显示了正常窦性心律下心脏的电活动,如下所示。
>>> import matplotlib.pyplot as plt
>>> fs = 360
>>> time = np.arange(ecg.size) / fs
>>> plt.plot(time, ecg)
>>> plt.xlabel("time in s")
>>> plt.ylabel("ECG in mV")
>>> plt.xlim(9, 10.2)
>>> plt.ylim(-1, 1.5)
>>> plt.show()
然而,在第二个16点之后,出现第一个过早的心室收缩,也称为收缩期。与典型的心跳相比,它们的形态有所不同。在下图中可以轻松观察到差异。
>>> plt.plot(time, ecg)
>>> plt.xlabel("time in s")
>>> plt.ylabel("ECG in mV")
>>> plt.xlim(46.5, 50)
>>> plt.ylim(-2, 1.5)
>>> plt.show()
在某些时候,较大的伪影会干扰录音,例如:
>>> plt.plot(time, ecg)
>>> plt.xlabel("time in s")
>>> plt.ylabel("ECG in mV")
>>> plt.xlim(207, 215)
>>> plt.ylim(-2, 3.5)
>>> plt.show()
最后,检查功率谱表明大多数生物信号由较低的频率组成。在60 Hz时,可以清楚地观察到市电感应的噪声。
>>> from scipy.signal import welch
>>> f, Pxx = welch(ecg, fs=fs, nperseg=2048, scaling="spectrum")
>>> plt.semilogy(f, Pxx)
>>> plt.xlabel("Frequency in Hz")
>>> plt.ylabel("Power spectrum of the ECG in mV**2")
>>> plt.xlim(f[[0, -1]])
>>> plt.show()