我正在尝试使用Java将卡尔曼滤波器应用于传感器读数,但我正在使用的Matrix操作库给我一堆空间错误。那么,有谁知道JVM的矩阵操纵库,具有更好的内存分配特征?

似乎这一个 - http://code.google.com / p /效率-java-matrix-library / - 仅以名称为“高效”。数据集具有9424行,乘2列,所有值都是双打(时间戳,一个维度在3中,传感器的读数中的一个维度)。

非常感谢,人们!

有帮助吗?

解决方案

1)卡尔曼滤波器不应需要大量的非线性缩放量的内存:它仅基于2值计算估计 - 初始值和先前值。因此,您应该期望您需要的内存量应与数据点的总量成比例。查看: http://rsbweb.nih.gov/ij/plugins/kalman.html

2)切换到浮点数将1/2计算计算所需的内存。这可能在您的情况下可能是微不足道的 - 我假设如果数据集因内存而崩溃,则使用非常少量的内存,运行JVM。您有一个大规模的数据集。

3)如果您真的有大型数据集(> 1g)并减半,那么您提到的库可以重新设计,只能使用floats。

4)为了比较Java Matrix库,可以结帐 http ://code.google.com/p/java-matrix-benchmark/wiki/memoryresults_2012_02 ---最低的内存占用libs是ojalgo,ejml和colt。 我有很好的运气,柯尔特用于大规模计算 - 但我不确定哪些实施卡拉曼方法。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top