Sto usando scipy.interpolate.UnivariateSpline
per interpolare senza problemi una grande quantità di dati. Funziona alla grande. Ottengo un oggetto che si comporta come una funzione.utilizzando l'output di scipy.interpolate.UnivariateSpline in seguito in python o in Matlab senza necessità di datapoint originali
Ora voglio salvare i punti della spline per dopo e usarli in Matlab (e anche in Python, ma è meno urgente), senza aver bisogno dei dati originali. Come posso fare questo?
In scipy non ne ho idea; UnivariateSpline non sembra offrire un costruttore con i nodi e i coefficienti precedentemente calcolati.
In MATLAB, ho provato le funzioni Matlab spline()
e pchip()
, e mentre entrambi si avvicinano, hanno errori vicino gli endpoint che sembrano un po 'come Gibbs ears.
Ecco una serie campione di dati che ho, in formato Matlab:
splinedata = struct('coeffs',[-0.0412739180955273 -0.0236463479425733 0.42393753107602 -1.27274336116436 0.255711720888164 1.93923263846732 -2.30438927604816 1.02078680231079 0.997156858475075 -2.35321792387215 0.667027554745454 0.777918416623834],...
'knots',[0 0.125 0.1875 0.25 0.375 0.5 0.625 0.75 0.875 0.9999],...
'y',[-0.0412739180955273 -0.191354308450615 -0.869601364377744 -0.141538578624065 0.895258135865578 -1.04292294390242 0.462652465278345 0.442550440125204 -1.03967756446455 0.777918416623834])
I coefficienti ei nodi sono il risultato della chiamata get_coeffs()
e get_knots()
sul SciPy UnivariateSpline. I valori 'Y' sono i valori della UnivariateSpline ai nodi, o più precisamente:
y = f(f.get_knots())
dove f è la mia UnivariateSpline.
Come posso utilizzare questi dati per creare una spline che corrisponda al comportamento di UnivariateSpline, senza dover utilizzare la casella degli strumenti Curve-Fitting? Non ho bisogno di fare alcun adattamento dati in Matlab, ho solo bisogno di sapere come costruire una spline cubica da nodi/coefficienti/valori spline.
non so se questo aiuta, ma un oggetto 'UnivariateSpline' almeno sembra essere pickleable, nel caso in cui si volesse riutilizzare la tua misura in Python. –
Una risposta dettagliata alla domanda dell'OP è pubblicata su http://stackoverflow.com/questions/22488637/getting-spline-equation-from-univariatespline-object/25330648#25330648. Questa risposta fornisce un mezzo per valutare manualmente i nodi e i coefficienti della spline, in modo che l'OP possa cercare di abbinarli agli input utilizzati da altri programmi. – nzh