Python 使用scipy的方波采样不正确
试图绘制4Hz采样的2Hz方波(见下图)。为什么我得不到红色包围的样品的均匀性,它应该是-1,用第二个红色箭头标记: 这是我的python代码(假设ipythonshell和导入的numpy(作为np)、scipy(信号)和matplotlib(plt))Python 使用scipy的方波采样不正确,python,numpy,matplotlib,scipy,signal-processing,Python,Numpy,Matplotlib,Scipy,Signal Processing,试图绘制4Hz采样的2Hz方波(见下图)。为什么我得不到红色包围的样品的均匀性,它应该是-1,用第二个红色箭头标记: 这是我的python代码(假设ipythonshell和导入的numpy(作为np)、scipy(信号)和matplotlib(plt)) 这是因为正常的浮点不精确。您正试图在发生跳跃的点处对方波进行采样。这对浮点数的不精确性很敏感 您圈出的值是s2t4[11],而t4[11]是2.75。看一看: In [15]: signal.square(2.0*np.pi*2.0*t4[
这是因为正常的浮点不精确。您正试图在发生跳跃的点处对方波进行采样。这对浮点数的不精确性很敏感 您圈出的值是
s2t4[11]
,而t4[11]
是2.75。看一看:
In [15]: signal.square(2.0*np.pi*2.0*t4[11])
Out[15]: array(1.0)
在参数中添加少量,则得到-1:
In [16]: signal.square(2.0*np.pi*2.0*t4[11] + 1e-14)
Out[16]: array(-1.0)
如果您移动t4,使样本远离不连续点,它应该可以正常工作。这是因为正常的浮点不精确。您正试图在发生跳跃的点处对方波进行采样。这对浮点数的不精确性很敏感 您圈出的值是
s2t4[11]
,而t4[11]
是2.75。看一看:
In [15]: signal.square(2.0*np.pi*2.0*t4[11])
Out[15]: array(1.0)
在参数中添加少量,则得到-1:
In [16]: signal.square(2.0*np.pi*2.0*t4[11] + 1e-14)
Out[16]: array(-1.0)
如果您移动
t4
使样本远离不连续点,它应该可以正常工作。我猜可能是浮点错误。您圈出的点可能略小于2.75,因此该值为1。解决这个问题最简单的方法是在方波的中点而不是角点处对三角波进行采样。我猜可能是浮点误差。您圈出的点可能略小于2.75,因此该值为1。解决这个问题的最简单方法是在方波的中点而不是角点处对三角波进行采样。