2017-07-01 2 views
0

Ich brauche eine Funktion, die auf Winkel arbeitet (Grad für das Beispiel, aber es kann auch Bogenmaß sein) mit den folgenden (es muss kontinuierlich sein, schreibe ich nur einige Schlüsselwerte auf, um das Verhalten zu verstehen) :Dreiecksfunktion auf Winkeln

any_function(angle): 

    0-> 0.0 
45-> 0.5 
90-> 1.0 
135-> 0.5 
180-> 0.0 
225->-0.5 
270->-1.0 
335->-0.5 
360-> 0.0 

Dies ist eine einfache dreieckige Welle.

Ist in einigen Modulen bereits etwas vorhanden oder muss ich es selbst erstellen?
Zum Beispiel so (quick and dirty):

def toTriangle(angle): 
if angle < 90 and angle >= 0: 
    t = (angle/90.) 
elif angle <= 180 and angle >= 90: 
    t = 2-(angle/90.) 
elif angle <= 270 and angle >= 180: 
    t = -(3-(angle/90.)) 
else: 
    t = -(4-(angle/90.)) 
return t 
+1

https: //docs.sci py.org/doc/scipy-0.14.0/reference/generated/scipy.signal.sawtooth.html – DeepSpace

Antwort

0

Dank Deepspace für Ihren Vorschlag, aber es aus der Box funktioniert nicht:

from scipy.signal import sawtooth 
sawtooth(0) 
Out[4]: array(-1.0) 

Hier ist ein weniger schnell-n-dirty Lösung:

def toTriangle(angle): 
    import math 
    tr = 1-4*math.fabs(0.5-math.modf(0.25+0.5*angle%(2*math.pi)/math.pi)[0]) 
    return t 

(http://mathworld.wolfram.com/TriangleWave.html)

Verwandte Themen