簡體   English   中英

使用Python在實時信號上進行ECG數據分析

[英]ECG Data Analysis on a real-time signal in Python

我正在使用Python根據Arduino獲得的信號生成心電圖(ECG)。 我想對此進行一些分析,我尚不知道哪種分析類型尚待確定。 但是我的問題是,是否可以對通過串行端口的實時數據流進行此分析,還是先將數據保存為一個文本文件然后對其進行分析更容易/更好。 現在,我無法解決這個問題。 一個額外的注意事項:我至少想檢測信號的峰值(R波)和RR間隔(這樣我就可以測量每分鍾的心跳數)。

到目前為止,這是我對Python的了解:

from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg
import matplotlib.figure as mfig
import PyQt4.QtGui as gui, PyQt4.QtCore as core
import collections
import time
import random

import serial
ser = serial.Serial('/dev/tty.usbmodem1411', 57600)

start_byte = 'S'
end_byte = 'F'


refreshMillis = 50
N = 200
xs = collections.deque(maxlen=N)
ys = collections.deque(maxlen=N)

app = gui.QApplication([])

fig = mfig.Figure()
canvas = FigureCanvasQTAgg(fig)

ax = fig.add_subplot(111)
ax.set_ylim([0,5])
line2D, = ax.plot(xs,ys)
canvas.show()

def process_line():

    line = ser.readline()
    data = map(float,line.split(" "))
    xs.append(data[0])
    ys.append(data[1])
    line2D.set_data(xs,ys)
    print data
    xmin, xmax = min(xs),max(xs)
    if xmin == xmax:
        ax.set_xlim([xmin,xmin+1])
    else:
        ax.set_xlim([xmin,xmax])
    canvas.draw()

timer = core.QTimer()
timer.timeout.connect(process_line)
timer.start(refreshMillis)

app.exec_()

ser.flush()
ser.close()

當然可以。 首先更容易保存它,然后再分析數據,但是對定義的數據塊執行此操作也沒有問題。 真正的問題是,您想進行哪種分析! 需要所有數據嗎? 或x秒的數據? 您需要多少數據才能找到可靠的R和RR值? 對於您的情況,我首先將一些數據轉儲掉並處理它,以查看您的需求。 然后,您可以稍后構建一個版本,該版本可以使用發現的算法參數即時執行此操作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM