2016-09-11 1 views
-1

Ich benutze die folgenden Codes, um die Amplitude der Sinuswelle nach dem Grenzwert 20 zu vergrößern. Hier kann ich die Amplitude der Sinuswelle nicht begrenzen Sinuswelle. Bitte beziehen Sie sich auf die Abbildung unten. Ich brauche die Ausgabe wie in der Abbildung im einzelnen Plot-Fenster [nicht über Subplot] erwähnt. Ich brauche nur die Amplitudenskalierung, nicht die Frequenzskalierung. Kann mir jemand dabei helfen?Wie schränkt man die Skalierung der Sinuswelle auf einen bestimmten Wert ein?

import matplotlib.pyplot as plt 
import numpy as np 

Limit=20 

x=np.linspace(-20,20,400) 
y=np.sin(x) 
plt.plot(x,y) 

y[(y<=Limit)] = y*0.5 
plt.plot(x,y) 

plt.grid() 
plt.show() 

enter image description here

+2

Wenn Sie ein Grundstück wie abgebildet wollen, sollten nicht Ihre x Werte von 0 bis 40 sein? Sollte Ihre Bedingung nicht auch "y [x <= Limit]" sein, da Sie alles vor einem bestimmten _x_ Wert, nicht innerhalb eines bestimmten _y_ Wertes skalieren wollen? – Praveen

+0

Ihre Beschreibung stimmt nicht mit der Abbildung überein. Sowohl die x- als auch die y-Grenze sind falsch. Auch wenn es nur Skalierung ist, warum fällt die Linie sofort um 20 ab? Skalierung würde das nicht tun. –

+0

Sie können den Grenzwert auf 10 ändern und überprüfen. Es ist immer noch nicht möglich, die Amplitudenskalierung einzuschränken. – HEMS

Antwort

1

Sind Sie für diese suchen:

import matplotlib.pyplot as plt 
import numpy as np 

x_limit = 20 

x = np.linspace(0,40,400) 
y = np.sin(x) 
y[x <= x_limit] *= 0.5 
plt.plot(x,y) 

plt.grid() 
plt.show() 

Ich glaube, Sie wollten das Limit auf das x anwenden, nicht das y.

enter image description here

+0

: Ausgabe ist nicht wie in der obigen Abbildung erwähnt – HEMS

+0

@HEMS: Whoops. Hatte den Zahlenbereich falsch – Eric

+0

: Absolut ja. Dies erfüllt die Amplitudenskalierungsanforderung auch während der dynamischen Verschiebung des x_limit auf der x-Achse. – HEMS

0

es relativ einfach durchgeführt werden kann, wie folgt:

import matplotlib.pyplot as plt 
import numpy as np 

Limit=20 

x=np.linspace(-20,20,4000) 
y=np.sin(x) 
plt.plot(x[x<0],y[x<0], lw=2, color='k') 

y[(y<=Limit)] = y*0.5 
plt.plot(x[x>0],y[x>0], lw=2, color='k') 

plt.grid() 
plt.show() 

, die produziert:

Output from the example code

+0

Ich bekomme einen glatteren Übergang zwischen zwei Wellen, wenn die Grenze Null ist. Das ist gut. Wenn es eine dynamische Verschiebung der Grenze auf beide Seiten von Null auf der x-Achse [-10 oder +10] gibt, gibt es Diskontinuität im Sinus wave [Einbruchsignal] was nicht gut ist. – HEMS

Verwandte Themen