我使用的是AD8232心率传感器和MCP3008模数转换器。在
我正在用matplotlib lib绘制传感器数据,但它太吵了。在
我必须过滤心电图数据,但我不知道如何申请。在
我可以实时过滤还是必须将数据保存到txt文件中,然后在将打印数据过滤到新的txt文件后应用过滤?在
我没有将数据保存到txt或csv文件中。如何过滤?在
import matplotlib.pyplot as plt
import numpy as np
import spidev, time
import RPi.GPIO as GPIO
# read adc function
def analog_read(channel):
r = spi.xfer2([1,(8+channel)<<4,0])
adc_out = ((r[1]&3) << 8) + r[2]
return adc_out
spi = spidev.SpiDev()
spi.open(0,0)
fig = plt.figure()
ax = fig.add_subplot(111)
x = np.arange(500)
y=[0 for iii range(500)]
li, = ax.plot(x, y)
plt.ylim([0,3.3])
fig.canvas.draw()
plt.show(block=False)
# convert adc function
def St():
for ii in range(1,501):
reading = analog_read(0)
voltage = reading * 3.3 / 4096
time.sleep(0.005)
vv=("%3.3f" % (voltage))
x[ii-1]=ii-1
y[ii-1]=vv
while True:
St()
li.set_ydata(y)
fig.canvas.draw()
你的脚本不适合我,所以我只添加代码,你需要理解。在
您的脚本不执行实时操作,而是批量处理大小为500的数据。更改为在实时图形中执行更新。在
我用的是德克。我从deque创建了一个大小为500的缓冲区,所以如果你一直从左边追加它,它会自动弹出旧值,所以如果你继续绘制它,它看起来会是实时的。在
输入新值后,在每个周期绘制数据之前,您有时间执行过滤-例如使用粗粒化方法(您需要对其进行编程),或者您只需根据前面的几个值进行平均。在
修改后的代码
相关问题 更多 >
编程相关推荐