用python计算数字信号的起始时间和持续时间

2024-04-26 13:23:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我很难在Python中使用time和{}来实现一个相当简单的目标。我已经使用过这些模块,并阅读了文档,但我认为我没有得到正确的方法。在

我有一个数字信号(一个长数组),它代表以给定采样率记录的时间序列,比如说每秒N个样本。在

我有以下格式的元组列表(虚拟数据):

[(150, 150),
 (450, 90),
 (750, 150),
 (1050, 90),
 (1350, 150),
 (1650, 90),
 ...
 (1950, 150)]

每个元组表示给定间隔的起始样本和样本数。区间是连续的,所以起始样本是单调递增的。在

我想要的是获取表示开始时间和持续时间间隔的字符串(因为每个样本都有一个固定的已知持续时间,由采样率决定),如下所示:

^{pr2}$

(重要提示:这些值不用于计算,只是提供结构和格式的概念。数值是任意键入的数字)

我可以想象用舍入、减法和模除之类的非常难看的方法来实现这一点,但是我认为Python,以及所有那些漂亮的时间操作模块,一定有一种Python方法来获得我需要的东西。在

有人吗?在

谢谢你的阅读! (并希望未来的答案能对其他人的未来道路有所启示)


Tags: 模块方法文档目标间隔time格式记录
1条回答
网友
1楼 · 发布于 2024-04-26 13:23:40
from datetime import timedelta

il = [(150, 150),
      (450, 90),
      (750, 150),
      (1050, 90),
      (1350, 150),
      (1650, 90),
      (1950, 150)]

sr = 12.5
tl = list(tuple((str(timedelta(seconds=j/sr)) for j in i)) for i in il)

for t in tl:
    print(t)

印刷品:

^{pr2}$

[编辑:删除输出数据不匹配的注释。]

time似乎不支持字符串格式来指定要显示的字段或小数位数。使用re.match()删除不需要的内容,或者将seconds转换为int并返回到string以获得固定的dd.ddd格式。在

相关问题 更多 >