Python 如何将正弦波的比例限制在某个值

Python 如何将正弦波的比例限制在某个值,python,numpy,matplotlib,Python,Numpy,Matplotlib,我正在使用以下代码,以便在限制值20后放大正弦波的振幅。在这里,我无法限制正弦波的振幅。请参考下图。我需要在单绘图窗口[非通过子绘图]中的图中所述的输出。我只需要振幅标度,不需要频率标度。有人能帮我吗 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(

我正在使用以下代码,以便在限制值20后放大正弦波的振幅。在这里,我无法限制正弦波的振幅。请参考下图。我需要在单绘图窗口[非通过子绘图]中的图中所述的输出。我只需要振幅标度,不需要频率标度。有人能帮我吗

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()
导入matplotlib.pyplot作为plt
将numpy作为np导入
上限=20
x=np.linspace(-20,20400)
y=np.sin(x)
平面图(x,y)

y[(y可以相对简单地完成,如下所示:

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()
导入matplotlib.pyplot作为plt
将numpy作为np导入
上限=20
x=np.linspace(-20,204000)
y=np.sin(x)

plt.plot(x[x你在找这个吗:

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()
导入matplotlib.pyplot作为plt
将numpy作为np导入
x_极限=20
x=np.linspace(0,40400)
y=np.sin(x)

y[x如果你想要一个如图所示的绘图,你的x值不应该是0到40吗?同样,你的条件不应该是
y吗[x您的描述与图不匹配。x和y限制都是错误的。此外,如果只是缩放,为什么线条会在20处立即下降?缩放不会这样做。您可以将限制值更改为10并进行检查。仍然无法限制振幅缩放。您的代码不会生成包含的图像。实际上生成@Eric:请正确阅读我的问题“请参考下图。我需要在单绘图窗口[不是通过子绘图]中的图中所述的输出。”当极限为零时,我在两个波之间获得更平滑的过渡。这很好。如果极限在x轴[-10或+10]上动态移动到零的任一侧,正弦波[break in signal]中存在不连续性,这是不好的。输出与上图中所述不一致:绝对是。即使在x轴上x_限制的动态移动期间,这也满足振幅缩放要求。