Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 带矩阵库的堆外空间_Java_Sensors - Fatal编程技术网

Java 带矩阵库的堆外空间

Java 带矩阵库的堆外空间,java,sensors,Java,Sensors,我试图使用Java将卡尔曼滤波器应用于传感器读数,但我使用的矩阵操作库给了我一个heapspace错误。那么,有人知道JVM的矩阵操作库具有更好的内存分配特性吗 看来这一个——只是名义上的“有效”。数据集有9424行2列,所有值都是双精度的(时间戳和传感器读数的三分之一) 非常感谢,伙计们 1)卡尔曼滤波器不应该需要大量的非线性缩放内存:它只根据两个值计算估计值——初始值和前一个值。因此,您应该期望所需的内存量应该与数据点的总量成比例。见: 2) 切换到浮动将占用计算所需内存的1/2。在您的情况

我试图使用Java将卡尔曼滤波器应用于传感器读数,但我使用的矩阵操作库给了我一个heapspace错误。那么,有人知道JVM的矩阵操作库具有更好的内存分配特性吗

看来这一个——只是名义上的“有效”。数据集有9424行2列,所有值都是双精度的(时间戳和传感器读数的三分之一)

非常感谢,伙计们

1)卡尔曼滤波器不应该需要大量的非线性缩放内存:它只根据两个值计算估计值——初始值和前一个值。因此,您应该期望所需的内存量应该与数据点的总量成比例。见:

2) 切换到浮动将占用计算所需内存的1/2。在您的情况下,这可能无关紧要——我假设如果数据集由于内存而崩溃,那么您运行的JVM内存非常少,或者您拥有大量的数据集

3) 如果您确实拥有一个大数据集(>1G),并且将其减半很重要,那么您提到的库可以重构为只使用浮点

4) 要比较java矩阵库,您可以签出——占用内存最少的库是ojAlgo、EJML和Colt。
我在Colt进行大规模计算时运气很好,但我不确定哪一个实现了Kalaman方法。

你能增加堆空间吗?这是另一个选择。不同的卡尔曼滤波器实现有非常不同的内存配置文件。最简单的实现可能很慢,占用大量内存。Arthur Gelb,“应用最优估计”详细介绍了其中的一些细节。我可以,但重点是我不需要这样做。增加堆大小只是草率编码的一个障碍,我希望首先避免草率编码。