Java中的数值微分和积分

时间:2009-11-10 02:24:24

标签: java math

这有点过分了 假设我以固定的速率(比如每秒一次)对信号进行采样 是否有数学Java库我可以用来从采样数据中计算/提取以下指标? 1)信号的变化率
2)在X秒/分钟时间内对信号值进行外推/预测 感谢

3 个答案:

答案 0 :(得分:2)

变化率只是最后两点的斜率,你不需要一个库。

你要求的'预测'没有严格定义,所以我只能猜测你所追求的是什么。有许多完美有效的方法可以做到这一点,从简单的线性外推(即使用最后两点的斜率绘制一条线,无论你想要多长时间),再到Kalman filter

OpenCV具有应用卡尔曼滤波器的例程,尽管它是用C语言编写的。有一些兴趣将它与Processing一起使用,所以你可能会对本指南有所了解:

http://ubaa.net/shared/processing/opencv/

我并不是要打败死马,但是如此多的问题,如果你提供更多关于你要做的事情的详细信息以获得更好的答案可能会有所帮助。希望这有帮助!

答案 1 :(得分:2)

  

1)信号的变化率

您可以通过差分或进行多项式拟合和微分来轻松计算信号相对于时间的变化率。您可能还想考虑某种时间平均,因为差异往往使函数“更加跳跃”,因为连续性比计算它的函数小一个数量级。

  

2)在X秒/分钟时间内对信号值进行外推/预测

一旦你得到第一部分的答案,推断是一件容易的事。请注意 - 外推总是一件危险的事情,特别是如果衍生品在时间上迅速变化的话。某种平滑,平均或过滤是你的朋友。

另一种方法可能是采用FFT并对结果进行逐项区分。

答案 2 :(得分:0)

如果您需要一些方程式,可以查看

  

面向对象的数值方法实现   作者: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

这主要是针对你的第二部分,因为根据你想要预测的方式,你可能需要各种方程来获得更好的想法,如果你想要做到最合适,那么延伸。

对于第一部分,我认为已经充分处理,确定斜率。