численное дифференцирование и интеграция в Java - PullRequest
1 голос
/ 10 ноября 2009

Это немного давно.
Предположим, я выполняю выборку сигнала с фиксированной скоростью (скажем, раз в секунду).
Есть ли математическая библиотека Java, которую я могу использовать для вычисления / извлечения следующих показателей из выбранных данных?
1) Скорость изменения сигнала
2) Экстраполяция / предсказание того, каким будет значение сигнала через X секунд / минут
Спасибо

Ответы [ 3 ]

2 голосов
/ 10 ноября 2009

1) Скорость изменения сигнала

Вы можете легко рассчитать скорость изменения сигнала по времени, либо дифференцируя, либо выполняя полиномиальное приближение и дифференцирование. Возможно, вы захотите подумать о некотором усреднении по времени, потому что дифференцирование приводит к тому, что функции становятся более «перемычками», поскольку непрерывность на один порядок меньше функции, из которой она рассчитывается.

2) Экстраполяция / предсказание того, каким будет значение сигнала через X секунд / минут

Получив ответ на первую часть, легко экстраполировать. Просто будьте осторожны - экстраполяция всегда опасна, особенно если производная быстро меняется во времени. Ваш друг здесь сглаживает, усредняет или фильтрует.

Другой подход может заключаться в том, чтобы взять БПФ и провести поэтапное дифференцирование результата.

2 голосов
/ 10 ноября 2009

Скорость изменения - это только наклон последних двух точек, для этого вам не нужна библиотека.

Запрашиваемый вами «прогноз» не является строго определенным, поэтому я могу только догадываться, что вы ищете. Есть много совершенно правильных способов сделать это, от простой линейной экстраполяции (то есть нарисовать линию с использованием наклона последних двух точек, сколько бы времени вы ни рассчитывали) до фильтра Калмана .

В OpenCV есть процедуры для применения фильтров Калмана, хотя он написан на C. Есть некоторый интерес в его использовании с Processing, так что вам может повезти, следуя этому руководству:

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

Я не имею в виду бить мертвую лошадь, но, как и многие вопросы, было бы полезно, если бы вы дали больше подробностей о том, что вы пытаетесь сделать, чтобы получить лучший ответ. Надеюсь, это поможет!

0 голосов
/ 10 ноября 2009

Если вам нужны некоторые уравнения, вы можете посмотреть на

Объектно-ориентированное внедрение численных методов Дидье Бессет. 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

Это в основном для вашей второй части, так как, в зависимости от того, как вы хотите предсказать, вам могут понадобиться различные уравнения, чтобы получить лучшее представление, если вы пытаетесь сделать наилучшее соответствие, тогда продолжайте.

Для первой части, я думаю, что это было достаточно решено, определить наклон.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...