Вопрос

Я пытаюсь применить фильтр Kalman к показаниям датчиков, используя Java, но библиотека манипуляции матрицы, которую я использую, дает мне ошибку HeaPspace.Итак, кто-нибудь знает из библиотеки манипуляции матрицы для JVM с лучшими характеристиками распределения памяти?

Казалось бы, что этот - http://code.google.com / p / efficient-java-matrix-library / - это "эффективно" только по имени.Набор данных имеет 9424 строк на 2 столбцах, все значения являются удваиваются (временные метки и одно измерение из 3 на показаниях от датчика).

Большое спасибо, ребята!

Это было полезно?

Решение

1) The Kalman filter should not require massive, non linear scaling amounts of memory : it is only calculating the estimates based on 2 values - the initial value, and the previous value. Thus, you should expect that the amount of memory you will need should be proportional to the total amount of data points. See : http://rsbweb.nih.gov/ij/plugins/kalman.html

2) Switching over to floats will 1/2 the memory required for your calculation . That will probably be insignificant in your case - I assume that if the data set is crashing due to memory, you are running your JVM with a very small amount of memory or you have a massive data set.

3) If you really have a large data set ( > 1G ) and halving it is important, the library you mentioned can be refactored to only use floats.

4) For a comparison of java matrix libraries, you can checkout http://code.google.com/p/java-matrix-benchmark/wiki/MemoryResults_2012_02 --- the lowest memory footprint libs are ojAlgo, EJML, and Colt. Ive had excellent luck with Colt for large scale calculations - but I'm not sure which ones implement the Kalaman method.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top