2014-12-04 89 views
0

我想查找一组数据的本地最大值。 我有一个来自探空火箭有效载荷的飞行数据日志,我想根据加速度计数据找到分段的大致时间。我应该能够根据图形数据的视觉检查得到我想要的时间,但是我该如何去用JavaScript编程式地查找点?查找本地最大值

+0

循环访问数据。每当下一个元素低于前一个元素时,前一个元素就是本地最大值。 – Barmar 2014-12-04 10:54:35

+0

我的信号有很大的噪音。分期也不完全干净。火箭发动机不仅停止,而且往往会溅射,而舞台的实际分离会通过有效载荷舱发出震动。我不能使用那种简单的方法。 – 2014-12-04 10:59:58

+0

听起来就像你需要编写一个过滤器来首先平滑数据。我想你需要做一些关于过滤的研究。一旦你完成了,如果它不起作用,发布你的代码,我们会尽力帮助你。 SO并不是让别人为你写代码。 – Barmar 2014-12-04 11:01:31

回答

0

如果只需要知道近似时间,那么使用一些启发式就足够了,如:通过平滑过滤器运行数据,然后查找跳转。

如果准确找到分期时间很重要,我的建议是构建一个分段连续模型并将其与数据拟合,然后从中推导出分期时间。例如,单阶段模型可能是:对于t < t < t_1,加速度是f(t)-g;对于t> t_1,加速度是 - g,其中g是重力加速度。我不知道f(t)可能在这里,但可能它在火箭工程中是众所周知的。拟合这样一个模型的困难是由于存在截止点t_1,这使得它不可区分,但它并不太难;在这样一个相对简单的情况下,可以遍历可能的截断点并计算其余参数的最小二乘解,然后取出具有最小误差的截点。

查看Seber and Wild,“非线性回归”;有关于这些模型的章节。