我有一个收集器,它以一定的频率收集加速度。我想绘制最大持续时间,其中<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