Вне HeapSpace с библиотекой Matrix - PullRequest
0 голосов
/ 08 марта 2012

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

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

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

1 Ответ

0 голосов
/ 08 марта 2012

1) Фильтр Калмана не должен требовать больших, нелинейных масштабируемых объемов памяти: он рассчитывает только оценки на основе 2 значений - начального значения и предыдущего значения. Таким образом, вы должны ожидать, что объем памяти, который вам потребуется, должен быть пропорционален общему количеству точек данных. Смотри: http://rsbweb.nih.gov/ij/plugins/kalman.html

2) Переключение на числа с плавающей запятой уменьшит объем памяти, необходимой для ваших вычислений. Это, вероятно, будет незначительным в вашем случае - я предполагаю, что если набор данных дает сбой из-за памяти, вы используете JVM с очень небольшим объемом памяти или , у вас большой набор данных.

3) Если у вас действительно большой набор данных (> 1G), и важно наполовину сократить его, то указанную библиотеку можно реорганизовать для использования только чисел с плавающей запятой.

4) Для сравнения библиотек java-матриц вы можете оформить http://code.google.com/p/java-matrix-benchmark/wiki/MemoryResults_2012_02 --- наименьшими библиотеками памяти являются ojAlgo, EJML и Colt. Мне очень повезло с Colt для крупномасштабных вычислений, но я не уверен, какие из них реализуют метод Каламана.

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