2017-02-23 5 views
0

Was ich tun muss, ist in einer Datei mit Zeiten, x und y Positionen einzulesen. Die Zeiten gehen in Stunden, aber ich möchte stattdessen die x und y Positionen im Abstand von Sekunden produzieren.Verwendung der interpolieren Funktion

Ich bin so verwirrt, als nicht sicher, ob ich es als 1D usw. behandeln Edit, die Funktion in Bezug auf Zeit und Positionen ist unbekannt, aber es gibt einen Trend.

+0

Ihre Interpolation ist 1d (nur Zeit), so verwenden [interp1d] (https://docs.scipy.org/doc/scipy/reference/generated/scipy .interpolate.interp1d.html) verwende mal als erstes Argument und x _und_ y kombiniert zu einem einzigen Array als zweites Argument –

Antwort

0

Alles, was Sie tun müssen, ist die Zeit in Einheiten definieren und wenn Sie die Interpolation zu tun, stellen Sie sicher, dass jedes Intervall in 3600. nur unterteilen (Da es 3600 Sekunden in einer Stunde sind.

ich ein Beispiel erstellt unter der Annahme, ein exponentieller und sinusförmigen Verlauf in x und y.

import numpy as np 
import matplotlib.pyplot as plt 
from scipy import interpolate 
mytime = np.arange(0, 10) 
x = np.sin(mytime) 
y = np.exp(-mytime/3.0) 
f = interpolate.interp1d(mytime, x, kind = 'cubic') 
g = interpolate.interp1d(mytime, y, kind = 'cubic') 
mytimenew = np.arange(0, 9, 1/3600) 
xnew = f(mytimenew) 
ynew = g(mytimenew) 
plt.plot(mytime, x, 'o', mytimenew, xnew, '-') 
plt.plot(mytime, y, 'o', mytimenew, ynew, '-') 
plt.show() 
+0

Das einzige Problem ist, dass ich den Trend von x und y nicht kenne ,? – point0zero