给定一系列数据,找到给定时间段的持续时间限制?

时间:2019-04-23 09:16:17

标签: python algorithm

我有一个收集器,它以一定的频率收集加速度。我想绘制最大持续时间,其中<​​strong> x标签是一段时间。

持续时间的计算应如下所示: 取一个周期内的最小值,并比较窗口窗口从头到尾的所有这些值,以得到最大值。

以下代码作为示例绘制了时间段为 0.001s到1s 时的持续时间值。有没有办法将时间复杂度降低到 O(nlogn)甚至更低?在我的原始数据中,数组太长,无法计算算法。

感谢帮助!

import numpy as np
import matplotlib.pyplot as plt

t=np.linspace(0,6.27,1000) #collect a value every 0.001s
y=np.sin(t)+1
plt.plot(t,y) ##original curve
yy=[]
for dt in np.arange(1,1000):
    max_duration = max(list((map(lambda i: min((y[i:i + dt])),range(1000)))))
    yy.append(max_duration)

plt.plot(np.arange(1,1000),yy)  ##calculated curve

0 个答案:

没有答案