2016-04-27 7 views
1

ich die Funktion numpy.unwrap zu verwenden, versuchen etwas PhaseFehler mit numpy auspacken, wenn die Verwendung von langen Arrays

Ich habe lange Vektor mit 2.678.399 Datensätze zu korrigieren, die den Unterschied in Radianten zwischen zwei Winkeln enthalten. Das Array enthält Nan-Werte, obwohl ich denke, dass es nicht relevant ist, da Unwrap für jeden Datensatz unabhängig angewendet wird.

Wenn ich aufgebracht unwrap, durch den 400 Rekord

im Rest des Feldes nan Werte erzeugt Wenn ich np.unwrap gelte nur eine Scheibe des ursprünglichen Arrays funktioniert gut.

Ist das ein möglicher Fehler in dieser Funktion?

d90dif=(df2['d90']-df2['d90avg'])*(np.pi/180)#difference between two angles in radians 
df2['d90dif']=np.unwrap(d90dif.values)#unwrap to the array to create new column 

nur das Problem

d90dif[700:705]#angle difference for some records 
2013-01-01 00:11:41 0.087808 
2013-01-01 00:11:42 0.052901 
2013-01-01 00:11:43 0.000541 
2013-01-01 00:11:44 0.087808 
2013-01-01 00:11:45 0.017995 
dtype: float64 

df2['d90dif'][700:705]#results with unwrap for these records 
2013-01-01 00:11:41 NaN 
2013-01-01 00:11:42 NaN 
2013-01-01 00:11:43 NaN 
2013-01-01 00:11:44 NaN 
2013-01-01 00:11:45 NaN 
Name: d90dif, dtype: float64 

jetzt zu erklären, ich den Prozess mit einem kleinen Array wiederholen

test=d90dif[700:705] 
2013-01-01 00:11:41 0.087808 
2013-01-01 00:11:42 0.052901 
2013-01-01 00:11:43 0.000541 
2013-01-01 00:11:44 0.087808 
2013-01-01 00:11:45 0.017995 
dtype: float64 

unw=np.unwrap(test.values) 
array([ 0.08780774, 0.05290116, 0.00054128, 0.08780774, 0.01799457]) 

jetzt in Ordnung ist. Wenn ich es mit einem Datenrahmen Eingang in unwrap tun() funktioniert gut und

Antwort

0

Es scheint, dass die nan Werte eine wichtige Rolle spielen

test 

2013-01-01 00:11:41 0.087808 
2013-01-01 00:11:42 0.052901 
2013-01-01 00:11:43 0.000541 
2013-01-01 00:11:44   NaN 
2013-01-01 00:11:45 0.017995 
dtype: float64 

Wenn nan in der Spalte ist, von dort alles, was ein wird

nan
np.unwrap(test) 

array([ 0.08780774, 0.05290116, 0.00054128,   nan,   nan]) 

ich würde sagen, dass dies ein Fehler ist, aber ...

1

am documentation of unwrap Mit Blick scheint es, dass NaN eine Wirkung haben würde, da die Funktion Betrachten von Unterschieden benachbarter Elemente, um Sprünge in der Phase zu erkennen.

+0

Ok. Dann macht es Sinn. Aber ich weiß, dass die entsprechende Funktion in Matlab kein solches Problem verursacht – gis20