如何将串行数据分配给多个变量列表并在 Python 中的指定持续时间内对它们进行平均?
How to assign serial data to multiple list of variables and averaged them for a specify duration in Python?
我从传感器读取连续的串行数据。我将它拆分并分配给 5 个变量 - a、b、c、d、e。我正在尝试每 5 秒计算每个变量的平均值。由于我的传感器是 50Hz,我将范围设置为 250。我的实现如下所示。所以,问题是 - 有没有更好的方法来做到这一点,特别是将时间设置为恰好 5 秒而不是假设它等于 250 次循环?
a,b,c,d,e = [[] for i in range(5)]
for i in range(250):
data = ser.readline().decode() #read from sensor
msg = float(data.split(','))
a.append(msg[0])
b.append(msg[1])
c.append(msg[2])
d.append(msg[3])
e.append(msg[4])
average_a = sum(a)/len(a)
average_b = sum(b)/len(b)
average_c = sum(c)/len(c)
average_d = sum(d)/len(d)
average_e = sum(e)/len(e)
尝试这样的事情
import datetime
duration = 5 #Collect for 5 seconds
time_start = datetime.datetime.now()
time_end = time_start + datetime.timedelta(seconds=duration)
big_list = [[] for i in range(5)]
#This loops runs for 5 seconds
while datetime.datetime.now() < time_end:
data = ser.readline().decode() #read from sensor
#Create a list of floats and append it to a list
msg = [float(f) for f in data.split(',')]
for i, m in enumerate(msg):
big_list[i].append(msg[i])
#Iterate through list of list, and calculate average for each list
for l in big_list:
print(sum(l)/len(l))
例如如果数据每次都是'1,2,3,4,5'
big_list = []
for i in range(250):
data = '1,2,3,4,5'
msg = [float(f) for f in data.split(',')]
big_list.append(msg)
for l in big_list:
print(sum(l)/len(l))
#1.0
#2.0
#3.0
#4.0
#5.0
我从传感器读取连续的串行数据。我将它拆分并分配给 5 个变量 - a、b、c、d、e。我正在尝试每 5 秒计算每个变量的平均值。由于我的传感器是 50Hz,我将范围设置为 250。我的实现如下所示。所以,问题是 - 有没有更好的方法来做到这一点,特别是将时间设置为恰好 5 秒而不是假设它等于 250 次循环?
a,b,c,d,e = [[] for i in range(5)]
for i in range(250):
data = ser.readline().decode() #read from sensor
msg = float(data.split(','))
a.append(msg[0])
b.append(msg[1])
c.append(msg[2])
d.append(msg[3])
e.append(msg[4])
average_a = sum(a)/len(a)
average_b = sum(b)/len(b)
average_c = sum(c)/len(c)
average_d = sum(d)/len(d)
average_e = sum(e)/len(e)
尝试这样的事情
import datetime
duration = 5 #Collect for 5 seconds
time_start = datetime.datetime.now()
time_end = time_start + datetime.timedelta(seconds=duration)
big_list = [[] for i in range(5)]
#This loops runs for 5 seconds
while datetime.datetime.now() < time_end:
data = ser.readline().decode() #read from sensor
#Create a list of floats and append it to a list
msg = [float(f) for f in data.split(',')]
for i, m in enumerate(msg):
big_list[i].append(msg[i])
#Iterate through list of list, and calculate average for each list
for l in big_list:
print(sum(l)/len(l))
例如如果数据每次都是'1,2,3,4,5'
big_list = []
for i in range(250):
data = '1,2,3,4,5'
msg = [float(f) for f in data.split(',')]
big_list.append(msg)
for l in big_list:
print(sum(l)/len(l))
#1.0
#2.0
#3.0
#4.0
#5.0