【发布时间】:2020-04-25 06:56:33
【问题描述】:
我正在尝试学习 Python,我正在通过一个项目从自行车功率计读取数据。现在我只是在计算从开始到结束的平均功率,方法是将每个功率读数添加到总和变量中,然后除以读数的数量。
我想计算 20 分钟的平均功率,如果可能,在前 20 分钟后每 30 秒继续计算 20 分钟的平均值,与之前的值进行比较,如果高于上一个值,则将其存储,所以最后我可以拥有比一小时锻炼更高的 20 分钟平均力量,例如,无论那一小时发生在哪里。
功率计的数据是基于事件的,据我所知,这不是定期间隔,而是每秒一次或更快。 到目前为止,这是我的代码的基础:
def average_power(power, count):
global PM1_sumwatt
global PM1_avgwatt
PM1_sumwatt = PM1_sumwatt + power
PM1_avgwatt = PM1_sumwatt / count
PM1_avgLog = open(PM1_avgFile, 'w')
PM1_avgLog.write("<div id=\"pwr\"> %d W</div>" % (PM1_avgwatt))
PM1_avgLog.close()
def power_data(eventCount, pedalDiff, pedalPowerRatio, cadence, accumPower, instantPower):
global PM1_avgcount
if WCORRECT1: calibpower = instantPower+(CF1w)
else: calibpower = instantPower*(CF1x)
power_meter.update(int(calibpower))
PM1_avgcount = PM1_avgcount + 1
average_power(int(calibpower), PM1_avgcount)
power = BicyclePower(readnode, network, callbacks = {'onDevicePaired': device_found,
'onPowerData': power_data})
# Starting PM readings
power.open(ChannelID(PM1, 11, 0))
不太清楚如何解决这个问题!非常感谢任何帮助或指针!
【问题讨论】:
-
输入数据是什么?你能给我们看一段你的代码吗?
-
欢迎堆栈溢出!不幸的是,这不是一个代码编写或教程网站,我们要求您为您的问题提供minimal reproducible example,包括示例输入、示例输出以及您根据自己的研究迄今为止尝试过的代码跨度>
-
将功率读数保存在一个列表中。如果您每 30 秒阅读一次,那么列表中的最后 40 项将是最近 20 分钟的值。
-
我刚刚添加了我正在使用的主要代码。第一个函数是整体平均计算,由第二个函数调用。在 BicyclePower 对象的每个事件上调用第二个函数。