【问题标题】:How to generate irregular time intervals?如何生成不规则的时间间隔?
【发布时间】:2016-12-28 04:00:43
【问题描述】:

我打算对真实数据进行模拟,即以不规则的时间间隔生成数据。下面是我在 python 中编写的一些原型代码,用于模拟不规则时间(不是数据),但结果是我的循环运行得太快,以至于产生的每个“时间”(dat)都是在同一个时间戳上产生的。在这段代码之上,我打算在这些不规则的时间戳处提供数据集并传递数据。

import time,random

Tadd=0.1
start=time.time()
while time.time()<(start+Tadd):
     x=random.uniform(0,1)
     if x<0.5:
         dat=time.time()
         print dat
     else:
         pass

输出是这样的。

1482896418.95
1482896418.95
1482896418.95
1482896418.95
1482896418.95
1482896418.95
1482896418.95
1482896418.95
1482896418.95
1482896418.95
1482896418.95
1482896418.95
1482896418.95
1482896418.95
1482896418.95
1482896418.95
1482896418.95
1482896418.95
1482896418.95
1482896418.95
1482896418.95
1482896418.95
1482896418.95
1482896418.95
1482896418.95
1482896418.95
1482896418.95
1482896418.95
1482896418.95
1482896418.95
1482896418.95
1482896418.95
1482896418.95
1482896418.95
1482896418.95
1482896418.95
1482896418.95
1482896418.95
1482896418.95
1482896418.95
1482896418.95
1482896418.95
1482896418.95
1482896418.95
1482896418.95
1482896418.95
1482896418.95

所以我的问题是:

  1. 我以这种方式编写代码是否可行或“现实”?还是我最好逐行阅读文本文件。例如读取第一行过程,读取第二行过程,....我的意图实际上是读取传感器数据以进行机器人定位。但是,这是最好的模拟。我在想也许我可以使用一个事件从我的鼠标中产生数据。有人可以就我如何解决这个问题提供见解和建议吗?或者我最好还是直接从模拟环境进入实际环境并购买超声波传感器。

  2. 或者,如果我在正确的轨道上,这是一个足够好的模拟。在这种情况下,如何使我的时间间隔不那么敏感,以便每个“时间”(dat)彼此不同。

【问题讨论】:

  • 在什么时间尺度上不规则?分、秒、毫秒、微秒等。
  • @wander95 我不是特别确定,但我认为是微秒。
  • 使用 time.clock(),有时需要使用浮动应用程序时钟来捕获非对称模式。硬件只能工作
  • 您是要运行代码 0.1 秒还是要生成直到时间戳小于 start+0.1 秒?

标签: python real-time sensors slam


【解决方案1】:

您只需生成一个随机数并将其添加到当前时间。这是假设您只需要过去的时间。

编辑:现在代码将按升序生成时间戳,平均间隔一秒。

import time,random

Tadd=0.1
start=time.time()
init = 0
while time.time()<(start+Tadd):
     x=random.uniform(init,init+1)
     dat=time.time()+x
     init+=1;
     print dat

print start, start+Tadd

【讨论】:

    【解决方案2】:

    模拟不定期到达的数据应该不难。但是,您不会在数据点之间添加任何延迟(除了代码执行时间),因此您可能希望显式添加它们。例如,此代码将运行 5 秒并以随机间隔打印时间。调整它以匹配您的数据源应该不难。

    import time
    import random
    
    run_time = 5
    start = time.time()
    now = time.time()
    while now < start + run_time:
        print now
        time.sleep(random.random())
        now = time.time()
    

    【讨论】:

      猜你喜欢
      • 2014-11-08
      • 1970-01-01
      • 1970-01-01
      • 2016-04-07
      • 1970-01-01
      • 2019-02-10
      • 1970-01-01
      • 1970-01-01
      • 2010-10-13
      相关资源
      最近更新 更多