Python 如何创建两个功能完全相同但x值不同的正弦波

Python 如何创建两个功能完全相同但x值不同的正弦波,python,numpy,scipy,Python,Numpy,Scipy,我需要构造两个描述相同函数的正弦波,但是,它们在x轴上应该有不同的起点。一个应该从0开始到2pi,另一个从0.05开始到2pi+0.05。它们的步长都应为1。对于正常正弦波,这很容易: n = int(2*numpy.pi//0.1) x_train = numpy.linspace(0, 2*numpy.pi, n) x_test = numpy.linspace(0.05, 2*numpy.pi+0.05, n) ysin_train = numpy.sin(2*x_train) ysi

我需要构造两个描述相同函数的正弦波,但是,它们在x轴上应该有不同的起点。一个应该从0开始到2pi,另一个从0.05开始到2pi+0.05。它们的步长都应为1。对于正常正弦波,这很容易:

n = int(2*numpy.pi//0.1)

x_train = numpy.linspace(0, 2*numpy.pi, n)
x_test = numpy.linspace(0.05, 2*numpy.pi+0.05, n)

ysin_train = numpy.sin(2*x_train)
ysin_test = numpy.sin(2*x_test)

plt.plot(x_train, ysin_train)
plt.plot(x_test, ysin_test)
plt.show()
该图将显示两条曲线完全相同,只是起点不同。对于方波来说,做什么并不那么明显。我试过这个:

from scipy import signal

ysquare_train = signal.square(2*x_train)
ysquare_test = signal.square(2*x_test)

plt.plot(x_train, ysquare_train)
plt.plot(x_test, ysquare_test)

但这两条曲线显然没有描述相同的功能,
ysquare\u测试
ysquare\u列车
领先0.05个单位。如何实现我想要的?

您遇到了离散的间距问题。尝试增加点数:

n = int(2*numpy.pi//0.01)

(顺便说一句:int在这里是多余的,因为您使用了//运算符)

所以您是说,无论我向
信号馈送什么x向量,平方正弦波都从0开始。平方
?我不确定是否理解您的问题。使用较大的
n
的代码确实会显示两个重叠的函数,一个从0开始,另一个从0.05开始。是的,这是正确的。那么这是matplotlibs plotting或scipy的
信号
函数的问题吗?不是。这只是你采样函数的方式,不够密集。若要理解,请尝试使用点标记“.”打印。