Frage

Ich versuche, einen Kalman-Filter mit Java an Sensorwerte anzuwenden, aber die Matrix-Manipulationsbibliothek, die ich verwende, gibt mir einen Healpace-Fehler.Hat jemand also eine Matrix-Manipulationsbibliothek für den JVM mit besseren Speicherzuteilungseigenschaften?

Es scheint, dass diese ein - http://code.google.com / p / p / effizient-java-matrix-library / - ist nur im Namen "effizient".Der Datensatz hat 9424 Zeilen mit 2 Säulen, alle Werte sind Doppelwerte (Zeitstempel und eine Abmessung von 3 bei Messwerten von einem Sensor).

Vielen Dank, Jungs!

War es hilfreich?

Lösung

1) Der Kalman-Filter sollte keine massiven, nichtlinearen Skalierungsmengen des Speichers erfordern: Es berechnet nur die Schätzungen basierend auf 2 Werten - den Anfangswert und den vorherigen Wert. Sie sollten also davon ausgehen, dass die Menge an Speicher, die Sie benötigen, proportional zur Gesamtbetrag der Datenpunkte sein sollte. Siehe: http://rsbweb.nih.gov/ij/plugins/kalman.html

2) Umschalten auf Floats wird 1/2 der für Ihre Berechnung erforderliche Speicher. Das wird in Ihrem Fall wahrscheinlich unbedeutend sein - ich gehe davon aus, dass Sie, wenn der Datensatz aufgrund von Erinnerung stürzt, Ihren JVM mit einem sehr geringen Speicherplatz oder Sie mit einem massiven Datensatz ausführen.

3) Wenn Sie wirklich einen großen Datensatz (> 1G) haben und halbiert, ist es wichtig, dass die von Ihnen erwähnte Bibliothek, um nur Floats zu verwenden.

4) Für einen Vergleich von Java-Matrix-Bibliotheken können Sie das Kasse http : //code.google.com/p/java-matrix-Benchmark/wiki/memoryResultS_2012_02 --- Die niedrigste Memory-Footprint-LIBS sind Ojalgo, EJML und Colt. Ich hatte ein großes Glück mit Colt für große Berechnungen mit großem Maßstab - aber ich bin mir nicht sicher, welche die Kalaman-Methode umsetzen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top