【发布时间】:2009-11-22 05:07:30
【问题描述】:
这有点远。
假设我以固定速率(比如每秒一次)对信号进行采样。
是否有数学 Java 库可用于从采样数据中计算/提取以下指标?
1) 信号的变化率
2) X 秒/分钟时间内信号值的外推/预测
谢谢
【问题讨论】:
这有点远。
假设我以固定速率(比如每秒一次)对信号进行采样。
是否有数学 Java 库可用于从采样数据中计算/提取以下指标?
1) 信号的变化率
2) X 秒/分钟时间内信号值的外推/预测
谢谢
【问题讨论】:
1) 信号的变化率
您可以通过差分或多项式拟合和微分轻松计算信号相对于时间的变化率。您可能还想考虑某种时间平均,因为微分往往会使函数“更加跳跃”,因为连续性比计算它的函数少一个数量级。
2) 信号值在 X 秒/分钟时间内的推断/预测
一旦你得到了第一部分的答案,就很容易推断出来。请注意 - 外推始终是一件危险的事情,尤其是在导数随时间迅速变化的情况下。某种平滑、平均或过滤是您的朋友。
另一种方法可能是采用 FFT 并对结果进行逐项微分。
【讨论】:
变化率只是最后两点的斜率,你不需要库。
您要求的“预测”没有严格定义,所以我只能猜测您所追求的。有许多非常有效的方法可以做到这一点,从简单的线性外推(即使用最后两点的斜率绘制一条线,无论您想预测多长时间),到 Kalman filter。
OpenCV 有应用卡尔曼滤波器的例程,虽然它是用 C 语言编写的。有兴趣将它与 Processing 一起使用,因此您可能会按照本指南走运:
http://ubaa.net/shared/processing/opencv/
我并不是要打死马,但就像许多问题一样,如果您提供更多有关您尝试做什么的详细信息以获得更好的答案,这可能会有所帮助。希望这会有所帮助!
【讨论】:
如果你需要一些方程,你可以看看
数值方法的面向对象实现 迪迪埃·贝塞特(Didier Besset)。 http://www.amazon.com/Object-Oriented-Implementation-Numerical-Methods-Introduction/dp/1558606793/ref=sr_1_1?ie=UTF8&s=books&qid=1257821447&sr=8-1
这主要是针对您的第二部分,因为根据您想要预测的方式,您可能需要各种方程式来获得更好的想法,如果您想要做一个最佳拟合,然后扩展。
对于第一部分,我认为已经充分处理了,确定斜率。
【讨论】: