scipy.misc.
electrocardiogram
()
加载心电图作为一维信号的示例。
返回的信号是5分钟长的心电图(ECG),这是心脏电活动的医学记录,以360 Hz采样。
例子:
from scipy.misc import electrocardiogram
ecg = electrocardiogram()
print(ecg)
#结果:
array([-0.245, -0.215, -0.185, ..., -0.405, -0.395, -0.385])
ecg.shape, ecg.mean(), ecg.std()
print(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()