2012-06-21 12 views
7

C'è un modo per interpolare una funzione con valori vettoriali utilizzando NumPy/SciPy?Interpolazione della funzione con valori vettoriali mediante NumPy/SciPy

Ci sono un sacco di offerte che funzionano su funzioni scalari e suppongo di poterne utilizzare uno per stimare separatamente ciascun componente del vettore, ma esiste un modo per farlo in modo più efficiente?

Elaborare, Ho una funzione f(x) = V, dove x è scalare e V è un vettore. Ho anche una collezione di xs e il loro corrispondente Vs. Vorrei utilizzarlo per interpolare e stimare V per un arbitrario x.

risposta

5

La funzione di interpolazione scipy.interpolate.interp1d funziona anche su dati con valori vettoriali per l'interpolante (non per i dati degli argomenti con valori vettoriali). Pertanto, finché x è scalare, è possibile utilizzarlo direttamente.

Il codice seguente è una leggera estensione dell'esempio dato in the scipy documentation:

>>> from scipy.interpolate import interp1d 
>>> x = np.linspace(0, 10, 10) 
>>> y = np.array([np.exp(-x/3.0), 2*x]) 
>>> f = interp1d(x, y) 
>>> f(2) 
array([ 0.51950421, 4.  ]) 
>>> np.array([np.exp(-2/3.0), 2*2]) 
array([ 0.51341712, 4.  ]) 

noti che 2 non è nell'argomento vettore x, così l'errore di interpolazione per il primo componente in y in questo esempio.

+0

Funziona come un incanto, grazie! – ktdrv

Problemi correlati