2010-09-29 15 views
8

Ho un codice MATLAB che richiede dati di serie temporali uniformemente distribuiti nel tempo per produrre una risposta. Il codice matlab del driver che legge il file di dati esegue anche un interp1 (x, y, xi, 'cubico') sui dati dopo che legge il file perché i dati non sono distribuiti uniformemente nel tempo.In Java esiste un'implementazione per l'interpolazione di dati di serie temporali distribuiti in modo non uniforme?

Ora devo portare questo processo in Java per aggiungerlo ad alcuni processi di produzione. La versione MATLAB non è anemizzabile a un numero elevato di file di dati e non può essere utilizzata in produzione.

La mia domanda reale è dove posso trovare una libreria Java che implementa già il metodo "cubico" interp1 da utilizzare quando i dati vengono letti nel processo?

In base ai documenti MATLAB, "cubico" equivale all'interpolazione piecewise cubic hermite interpolating polynomial (pchip). 'spline' produce risultati inaccettabili. Ho già visto Apache commons-math e JAMA.

+1

Suona come un buon esercizio di java :-) – aioobe

+1

Sono d'accordo, tranne che l'obiettivo non è un'esperienza di apprendimento per me. Lo implementerò se necessario, ma preferirei usare una libreria, se possibile. –

+0

Questo sarebbe molto utile se devo codificare la mia soluzione per un problema correlato: http://stackoverflow.com/questions/2675929/is-there-a-java-data-structure-that-is-effectively-an -arraylist-with-double-indic Con la risposta a questa domanda, posso semplicemente aggiungere un'interfaccia simile a ArrayList e duplicare le funzionalità esistenti con (si spera) prestazioni e accuratezza migliori. –

risposta

0

Avete controllato Java LAPACK? http://www.netlib.org/java/f2j/

+0

Sembra essere solo il codice FORTRAN LAPACK eseguito attraverso il compilatore f2j. Esiste un interpolatore PCHIP in LAPACK? –

1

DREJ.

http://www.gregdennis.com/drej/

Minimi quadrati non lineari tramite la regressione su insiemi di dati. È possibile specificare il valore lamda (buono adattamento) e ottenere un adattamento più economico ai dati.

Interpola ed estrapola, ma non estrapola troppo lontano;

Se si desidera un determinato comportamento del campo lontano estrapolato aggiungere un altro punto là fuori da qualche parte!

Utilizza la regressione del kernel in modo da poter ottenere facilmente diversi tipi di attacchi. Kardi Teknomo ha una buona pagina sulla regressione del kernel.

Funziona.

+0

Potresti aggiungere qualche dettaglio sul tipo di raccordo che la curva può fare? Può estrapolare e interpolare o solo uno? Fa lineare, quadratico, cubico, eremita? –

Problemi correlati