Seite 1 von 1
Intervall auf [-pi,pi] abbilden
Verfasst: Montag 18. November 2019, 12:54
von Leonie92
Hallo zs,
gibt es eine einfache Methode um Werte in einem beliebigen Intervall, z.B.
Code: Alles auswählen
x = np.array([-6,-5,-4,-3,-2,-1,0,1,2,3,5,6])
auf das Intervall in [-pi,pi] abzubilden.
Um x auf [0,2pi] abzubilden, muss man einfach nur
verwenden. Ich frage mich, ob es eine ähnlich einfache Methode für die Abbildung in [-pi,pi] gibt.
Re: Intervall auf [-pi,pi] abbilden
Verfasst: Montag 18. November 2019, 13:17
von ThomasL
Deinem Modulo Code kann ich nicht folgen.
Code: Alles auswählen
import numpy as np
x = np.array([-6,-5,-4,-3,-2,-1,0,1,2,3,5,6])
def remap(x, in_min, in_max, out_min, out_max):
return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min
remap(x, min(x), max(x), -np.pi, np.pi)
"""
array([-3.14159265, -2.61799388, -2.0943951 , -1.57079633, -1.04719755,
-0.52359878, 0. , 0.52359878, 1.04719755, 1.57079633,
2.61799388, 3.14159265])
"""
Re: Intervall auf [-pi,pi] abbilden
Verfasst: Montag 18. November 2019, 13:22
von ThomasL
Man kann die Ermittlung des min und max Wertes der Eingabewerte natürlich in die Funktion packen
Code: Alles auswählen
def remap(x, out_min, out_max):
in_min = min(x)
return (x - min(x)) * (out_max - out_min) / (max(x) - min(x)) + out_min
print(remap(x, -np.pi, np.pi))
# [-3.14159265 -2.61799388 -2.0943951 -1.57079633 -1.04719755 -0.52359878
# 0. 0.52359878 1.04719755 1.57079633 2.61799388 3.14159265]
Re: Intervall auf [-pi,pi] abbilden
Verfasst: Montag 18. November 2019, 13:28
von Leonie92
Danke für die schnelle Antwort. In deinem Code ist ein Fehler.
Die gesuchte Abbildung sollte die Werte -3,-2,-1,1,2,3 unverändert lassen, da diese bereits im Intervall [-pi,pi] liegen.
In deiner Lösung tauchen die Werte nicht mehr auf.
-------------------------------------------------------------------------------------------------
Code: Alles auswählen
x = array([-6,-5,-4,-3,-2,-1,0,1,2,3,5,6])
x % (2*pi)
--> array([0.28318531, 1.28318531, 2.28318531, 3.28318531, 4.28318531,
5.28318531, 0. , 1. , 2. , 3. ,
5. , 6. ])
Wie oben beschrieben, wird das Intervall x durch die Modulo-Operation auf [0,2pi] abgebildet.
Re: Intervall auf [-pi,pi] abbilden
Verfasst: Montag 18. November 2019, 13:35
von ThomasL
Mein Beispielcode nimmt eine "Abbildung" der Werte eines Intervalls auf ein anderes Intervall vor.
Das was du willst ist keine "Abbildung".
Re: Intervall auf [-pi,pi] abbilden
Verfasst: Montag 18. November 2019, 14:09
von __blackjack__
@ThomasL: Kommt auf die Definition von Abbildung an. In der Mathematik ist eigentlich alles eine Abbildung was Werte aus einer Menge in einen anderen Menge abbildet, also auch das was Leonie92 da machen will. Abbildungen müssen nicht bijektiv sein — das heisst es ist nicht zwingend vorausgesetzt das man aus dem Ergebnis auch wieder eindeutig auf die Ausgangsmenge zurück abbilden kann.
Re: Intervall auf [-pi,pi] abbilden
Verfasst: Montag 18. November 2019, 14:24
von ThomasL
@__blackjack__ Stimmt. Was auch immer sie will, es ist keine "lineare" Abbildung eines Intervalls auf ein anderes. Und diese Angabe fehlte.