Pergunta

Estou tentando aplicar um filtro de Kalman às leituras do sensor usando o Java, mas a biblioteca de manipulação de matriz estou usando é me dar um erro de headspace.Então, alguém sabe de uma biblioteca de manipulação de matriz para a JVM com melhores características de alocação de memória?

Parece que este - http://code.google.com / p / eficiente-Java-matrix-biblioteca / - é "eficiente" apenas no nome.O conjunto de dados possui 9424 linhas por 2 colunas, todos os valores são duplos (Timestamp e uma dimensão de 3 em leituras de um sensor).

Muito obrigado, caras!

Foi útil?

Solução

1) O filtro KALMAN não deve exigir quantidades de escala enormes e não lineares de memória: ele está calculando apenas as estimativas com base em 2 valores - o valor inicial e o valor anterior. Assim, você deve esperar que a quantidade de memória que você precisará deve ser proporcional à quantidade total de pontos de dados. Veja: http://rsbweb.nih.gov/ij/plugins/kalman.html

2) Mudar para flutuadores irá 1/2 a memória necessária para o seu cálculo. Isso provavelmente será insignificante no seu caso - eu suponho que se o conjunto de dados estiver falhando devido à memória, você está executando sua JVM com uma quantidade muito pequena de memória ou Você tem um conjunto de dados massivo.

3) Se você realmente tem um conjunto de dados grande (> 1G) e metade, é importante, a biblioteca que você mencionou pode ser refatada para usar apenas flutuadores.

4) Para uma comparação de bibliotecas de matriz java, você pode checkout http : //code.google.com/p/java-matrix-benchmark/wiki/memoryResults_2012_02 --- A menor memória de memória As libs são Ojalgo, EJML e Colt. Ive tinha excelente sorte com o Colt para cálculos de larga escala - mas não tenho certeza quais implementar o método Kalaman.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top